Fokus auf EditText in ListView, wenn Block Nachkommen (Android)

Ich habe eine benutzerdefinierte ListView . Jede Zeile hat einen EditText, Buttons & TextView . Um die ListView Items klickbar zu machen, habe ich android:descendantFocusability="blocksDescendants" für das reihenlayout gehalten. Wenn ich die Nachkomme nicht behalte, kann ich keine Aktion für onItemClick . Wenn ich den EditText , ist der EditText der in meiner Zeile vorhanden ist, nicht fokussiert. Ich möchte die EditText fokussierbar und auch ich sollte in der Lage sein, auf jede Zeile zu klicken, um zu einer anderen Activity zu navigieren. Kann mir bitte jemand helfen. Danke allen

Bearbeiten: Im CustomAdapter für EditText habe ich versucht, onTouchListener halten und auch onClickListener wo ich anfrageFocus aber das scheint nicht zu funktionieren.

Row.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/recentrowLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="@dimen/margin_left_5" android:clickable="true" tools:ignore="UseCompoundDrawables,HardcodedText,ContentDescription,UselessParent" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/edit_text_bg" android:padding="@dimen/margin_left_5" > <RelativeLayout android:id="@+id/rl1" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/addSubscribe" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" /> <TextView android:id="@+id/flikart_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="FLIKART" android:textColor="@color/gray" android:textSize="@dimen/medium_text_size" /> <ImageView android:id="@+id/addToFav" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" /> </RelativeLayout> <LinearLayout android:id="@+id/rl2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/rl1" android:layout_marginLeft="@dimen/margin_30" android:layout_marginRight="@dimen/margin_30" android:layout_marginTop="10dp" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/text_desciption" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:gravity="center_horizontal" android:lines="2" android:text="20% off on Smart Phones and basic Handsets has upto 50% OFF only" android:textColor="@color/blue" /> <TextView android:id="@+id/text_desciption2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:lines="1" android:text="somethign something,......." android:textColor="@color/gray" /> <TextView android:id="@+id/couponTypeText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/margin_left_10" android:background="@drawable/button_bg" android:gravity="center" android:padding="@dimen/margin_left_10" android:text="STEAL THE DEAL" android:textColor="@color/white" android:textSize="@dimen/little_small_text_size" /> </LinearLayout> <RelativeLayout android:id="@+id/rl3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/rl2" android:layout_marginTop="@dimen/margin_left_10" > <TextView android:id="@+id/text_offer_expiry" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginRight="@dimen/margin_left_5" android:text="Ends 10 days" android:textColor="@color/red" android:textSize="16sp" /> <RelativeLayout android:id="@+id/rightLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="5dp" > <ImageView android:id="@+id/comment_image_total" android:layout_width="@dimen/dimenstion_25" android:layout_height="@dimen/dimenstion_20" android:background="@drawable/comments" /> <TextView android:id="@+id/text_comments" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@id/comment_image_total" android:text="100 Comments" android:textColor="@color/gray" android:textSize="16sp" /> </RelativeLayout> <RelativeLayout android:id="@+id/ll2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_toLeftOf="@id/rightLayout" android:layout_toRightOf="@id/text_offer_expiry" android:gravity="center_horizontal" > <ImageView android:id="@+id/like_image_total" android:layout_width="@dimen/dimenstion_25" android:layout_height="@dimen/dimenstion_25" android:background="@drawable/like" /> <TextView android:id="@+id/text_total_likes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@id/like_image_total" android:text="999 Likes" android:textColor="@color/gray" android:textSize="16sp" /> </RelativeLayout> </RelativeLayout> <View android:id="@+id/view" android:layout_width="fill_parent" android:layout_height="4dp" android:layout_below="@id/rl3" android:layout_marginTop="@dimen/margin_5" android:background="@color/purple_clor" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="@dimen/title_bar_height" android:layout_below="@id/view" android:layout_centerVertical="true" android:layout_marginTop="@dimen/margin_5" > <RelativeLayout android:id="@+id/likesLayout" android:layout_width="@dimen/dimenstion_40" android:layout_height="@dimen/dimenstion_40" android:layout_centerVertical="true" android:background="@drawable/unratedbkg" > <Button android:id="@+id/likesBtn" android:layout_width="@dimen/dimenstion_30" android:layout_height="@dimen/dimenstion_30" android:layout_centerInParent="true" android:background="@drawable/unrated" /> </RelativeLayout> <RelativeLayout android:id="@+id/footermain" android:layout_width="fill_parent" android:layout_height="@dimen/dimenstion_40" android:layout_centerVertical="true" android:layout_toRightOf="@id/likesLayout" android:background="@color/white" > <RelativeLayout android:id="@+id/animLayout" android:layout_width="100dp" android:layout_height="@dimen/dimenstion_40" android:layout_marginLeft="10dp" android:layout_toRightOf="@id/likesLayout" android:background="@drawable/ratingbkg" android:visibility="gone" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_margin="@dimen/margin_5" > <ImageView android:id="@+id/like_image" android:layout_width="@dimen/dimenstion_30" android:layout_height="@dimen/dimenstion_30" android:layout_centerInParent="true" android:background="@drawable/like" /> </RelativeLayout> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_margin="@dimen/margin_5" > <ImageView android:id="@+id/dislike_image" android:layout_width="@dimen/dimenstion_30" android:layout_height="@dimen/dimenstion_30" android:layout_centerInParent="true" android:background="@drawable/dislike" /> </RelativeLayout> </RelativeLayout> <EditText android:id="@+id/add_comment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:layout_toRightOf="@id/animLayout" android:focusable="false" android:focusableInTouchMode="false" android:hint="Add Comment" android:inputType="text" /> </RelativeLayout> </RelativeLayout> </RelativeLayout> </LinearLayout> 

  • Tippen Sie auf außerhalb von Edittext, um den Fokus zu verlieren
  • Bearbeiten von Text in ListActivity ListView verliert Fokus, wenn Tastatur herunterkommt
  • Android, Admob / Adview nimmt | stiehlt Fokus von edittext, Wie zu verhindern?
  • Stellen Sie den Anfangsfokus in einer Android-Anwendung ein
  • Wie man eine Android SeekBar einsetzt, um unbewegbar / gefroren zu sein?
  • Erweitern und geben Fokus auf SearchView automatisch
  • Radio Group nicht immer Fokus in Android
  • Wie markiere ich ImageView, wenn ich fokussiert oder geklickt habe?
  • 5 Solutions collect form web for “Fokus auf EditText in ListView, wenn Block Nachkommen (Android)”

    Bitte verwenden Sie nicht setOnItemClickListener für Artikel klicken .. Ich denke, dass Sie verwenden sollten Element Ansicht klicken Sie in Adapter-Methode

     convertView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "click item",Toast.LENGTH_LONG).show(); } }); 

    Entfernen Sie diese aus dem Hauptlisten-Layout

     android:descendantFocusability="blocksDescendants" 

    Danke und genieße diesen Code!

    Versuchen Sie, diese Zeile zu Ihrer Aktivität in der manifest.xml hinzuzufügen

     android:windowSoftInputMode="stateHidden|adjustResize|adjustPan" 
     you do like this: first set in your listview android:focusable="false"; 

    Dann möchtest du, dass die Zeile angeklickt wird: denn das bitte in deinem CustomAdapter

      v.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(context, "Hello world",2000).show(); } }); 

    Es wird klappen. Standardmäßig sollten Ihre Artikel jetzt die Klick-Option haben, wenn Sie android: focusable = "false" in listview gemacht haben. Keine Notwendigkeit zu verwenden -descendantFocusability in listview.

    Main.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/MyList" android:layout_height="fill_parent" android:layout_width="fill_parent" android:descendantFocusability="beforeDescendants"> </ListView> </LinearLayout> 

    Item.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/ItemCaption" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_marginLeft="2dip" android:singleLine="true"> </EditText> </LinearLayout> 

    AndroidCustomListViewActivity

     public class AndroidCustomListViewActivity extends Activity { private ListView myList; private MyAdapter myAdapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myList = (ListView) findViewById(R.id.MyList); myList.setItemsCanFocus(true); myAdapter = new MyAdapter(); myList.setAdapter(myAdapter); } public class MyAdapter extends BaseAdapter { private LayoutInflater mInflater; public ArrayList myItems = new ArrayList(); public MyAdapter() { mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); for (int i = 0; i < 20; i++) { ListItem listItem = new ListItem(); listItem.caption = "Caption" + i; myItems.add(listItem); } notifyDataSetChanged(); } public int getCount() { return myItems.size(); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.item, null); holder.caption = (EditText) convertView .findViewById(R.id.ItemCaption); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //Fill EditText with the value you have in data source holder.caption.setText(myItems.get(position).caption); holder.caption.setId(position); //we need to update adapter once we finish with editing holder.caption.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus){ final int position = v.getId(); final EditText Caption = (EditText) v; myItems.get(position).caption = Caption.getText().toString(); } } }); return convertView; } } class ViewHolder { EditText caption; } class ListItem { String caption; } } 

    Main.xml

     <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:animationCache="false" android:scrollingCache="false" android:smoothScrollbar="true" > </ListView> 

    Erstellen Sie ArrayList Daten in den Arraylisten hinzufügen.

     lv=(ListView)findViewById(R.id.listView1); lv.setItemsCanFocus(true); for(int i=0;i<30 data-blogger-escaped-br="" data-blogger-escaped-i=""> list.add(i); } 

    1) Adapter für die Listenansicht erstellen und die Position als Tag für den Edittext einstellen.

    2) Normalerweise, wenn das Scrollen der Position Position wird sich ändern.So, müssen Sie die edittext Tag und legen Sie es in die edittext id.from, dass Sie die Änderung der Position Position zu vermeiden.

     holder.caption = (EditText) convertView .findViewById(R.id.editText12); holder.caption.setTag(position); holder.caption.setText(list.get(position).toString()); convertView.setTag(holder); }else { holder = (ViewHolder) convertView.getTag(); } int tag_position=(Integer) holder.caption.getTag(); holder.caption.setId(tag_position); 

    Schließlich füge den Text-Watcher den Edittext hinzu und speichere die Änderungen in die richtige Position in der Liste.

     holder.caption.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { final int position2 = holder.caption.getId(); final EditText Caption = (EditText) holder.caption; if(Caption.getText().toString().length()>0){ list.set(position2,Integer.parseInt(Caption.getText().toString())); }else{ Toast.makeText(getApplicationContext(), "Please enter some value", Toast.LENGTH_SHORT).show(); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { } }); 

    Verweisen Sie diesen Link .. http://velmuruganandroidcoding.blogspot.in/2014/08/edittext-in-listview-android-example.html

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.