2017-04-17 5 views
0

Dies ist mein erster Versuch eine Frage zu stellen. Ich bin ein Anfänger in Android. Wenn ich Bild OnClickListener() auf eine einfache Art und Weise verwende es funktioniert, aber wenn ich gridView verwende, die ein imageView und ein TextView auf Image Click hat, möchte ich zu einer neuen Aktivität springen. Was ich tue, ist einfach anrufen gridview OnItemClickListener() und auf eine andere Tätigkeit springen, die wie ich weiter untenWarum ist Bild OnClickListener() nicht auf Klick reagiert

gridView = (GridView) findViewById(R.id.gridview1); 
gridView.setAdapter(new Adapter1(this)); 


gridView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
     Intent sendID_intent = new Intent(Activtiy1.this, Activity2.class); 
      startActivity(sendID_intent); 


     } 
    }); 

bei Adapter1 Ich bin erstrecktBaseAdapter, wo ein Bild mit Picasso Bibliothek zeigen arbeitet, die ist Last auch funktioniert das einzige Problem mit Bildklickereignis, das nicht richtig funktioniert.

public class Adapter1 extends BaseAdapter { 
private Context mC1; 

ArrayList<View> viewList = new ArrayList<View>(); 

public Adapter1(Context context) { 
    mC1 = context; 
} 


@Override 
public int getCount() { 
    return normlSearchList.size(); 
} 

@Override 
public Object getItem(int position) { 
    return normlSearchList.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 
@SuppressLint("ViewHolder") 
@Override 
public View getView(final int position, View convertView, 
        ViewGroup parent) { 
    View view1=convertView; 

    if ((position + 1) > viewList.size()) { 

     LayoutInflater inflater = (LayoutInflater) mC1.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view1 = inflater.inflate(R.layout.view_grid,null); 
     ImageView imageView = (ImageView) view1.findViewById(R.id.iv_galleryb); 
     TextView textView = (TextView) view1.findViewById(R.id.tv_name); 

     textView.setText(normlSearchList.get(position).getPost_title()); 

     final String txtID; 
     String img_url = normlSearchList.get(position).getImage(); 
     Picasso.with(mContext) 
       .load(img_url) 
       .placeholder(R.drawable.it_logo_td) 
       .error(R.drawable.it_logo_td) 
       .noFade().resize(150, 150) 
       .centerCrop() 
       .into(imageView); 
     viewList.add(view1); 


     imageView.setOnClickListener(new OnClickListener() { 


      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent intent = new Intent(mContext, Activity2.class); 
       mC1.startActivity(intent); 
      } 
     }); 
    } 

    return view1; 
} 
} 

Meine Layout-Datei enthalten einfach relativ Layout die Nachricht nicht gefunden ein Linearlayout eine Textview für Anzeigedaten hält, wenn keine Daten und ein gridview

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:layout_margin="5dp" 
> 
    <LinearLayout 
     android:id="@+id/layout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:orientation="horizontal" > 
................... 
    </LinearLayout> 
<TextView 
    android:text="" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView" 
    android:gravity="center_horizontal" 
    android:visibility="invisible" 
    /> 
<GridView 
    android:id="@+id/gridview1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/layout1" 
    android:numColumns="3" 
    android:columnWidth="200dp" 
    android:gravity="center" 
    android:stretchMode="columnWidth" 
    /> 
gefunden

Mein viewgrid .xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="100dp" 
    android:layout_height="80dp" 
    android:descendantFocusability="afterDescendants"> 
<ImageView 
    android:id="@+id/iv_galleryb" 
    android:layout_width="100dp" 
    android:layout_height="80dp" 
    android:clickable="true" 
    android:scaleType="fitXY" 
    /> 

<TextView 
android:id="@+id/tv_name" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_below="@+id/iv_galleryb" 
/> 

Ich hoffe, ich mache mein Problem klar.

Antwort

1

Ich würde vermeiden, klickbare Ansichten innerhalb von GridView zu verwenden, statt, würde ich RecyclerView verwenden. Da GridView onItemClick implementiert, kann es zu einem Konflikt mit ImageView klickbar kommen. versuchen

Auf jeden Fall hinzufügen android:focusable="true" in <ImageView />

+0

nur ersetzen 'android: anklickbare = "true"' 'mit android: fokussierbarem = "true"', aber immer noch nicht funktioniert. – Chris

+0

Irgendwelche andere Sache, die ich versuchen kann, es zu arbeiten – Chris

+0

versuchen Sie, um 'android: descendantFocusability =" afterDescendants "' – betorcs

Verwandte Themen