Intereting Posts
Почему getExternalFilesDirs () не работает на некоторых устройствах? Предупреждение: предупреждение: Поддерживаемая исходная версия 'RELEASE_7' из обработчика аннотаций 'android.arch.lifecycle.LifecycleProcessor' меньше, чем -source '1.8' Android: обнаружение, если пользователь коснется и перетащит из области кнопки? Как я могу adb установить apk на несколько подключенных устройств? Android sdk main.out.xml ошибка синтаксического анализа Как передать переменную String в MultipartEntity? Как создать эффект выделения для текста меньшей длины, не превышающей размер экрана в Android? Местное уведомление в телефонной таблице 3.3.0 Регистрация устройства в файл Как выполнить «callOnClick ()» для API 8 андроида? Android java get html image tag из строки ContentLoadingProgressBar никогда не показывает Aapt_rules.txt не найден при создании apk в студии Android Каков наилучший способ «настройки приложения» в Android? Приложение для Android не начинается с ярлыка

Сосредоточьтесь на EditText в ListView, когда потомки блоков (Android)

У меня есть настроенный ListView . Каждая строка имеет EditText, Buttons & TextView . Чтобы сделать элементы android:descendantFocusability="blocksDescendants" ListView доступными, я сохранил android:descendantFocusability="blocksDescendants" для макета строки. Если я не сохраню onItemClick потомства, я не могу выполнить действие для onItemClick . Если я сохраняю EditText потомства фокусироваться, то EditText который присутствует в моей строке, не фокусируется. Я хочу, чтобы EditText сфокусирован, а также я должен был бы щелкнуть по каждой строке, чтобы перейти к другому Activity . Может кто-нибудь, пожалуйста, помогите мне в этом. Спасибо всем.

Изменить: в CustomAdapter для EditText я попытался сохранить onTouchListener а также onClickListener где я запрашиваю Focus, но это, похоже, не работает.

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> 

Solutions Collecting From Web of "Сосредоточьтесь на EditText в ListView, когда потомки блоков (Android)"

Пожалуйста, не используйте setOnItemClickListener для клика по элементу. Я думаю, что вы должны использовать элемент view click inside adapter method

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

Удалить это из макета главного списка

 android:descendantFocusability="blocksDescendants" 

Спасибо и наслаждайтесь этим кодом!

Попытайтесь добавить эту строку в свою активность в manifest.xml

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

То вы хотите, чтобы строка была нажата: для этого в вашем customAdapter вы должны делать это так:

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

Это будет работать. По умолчанию у ваших элементов теперь должен быть параметр «щелчок», когда вы создали андроид: focusable = «false» в списке. Не нужно использовать -descendantFocusability в 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> 

Создать ArrayList добавить данные в arraylist.

 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) создайте адаптер для списка и установите его как тег для edittext.

2) Обычно, когда прокрутка позиции позиции изменится. Таким образом, вы должны получить тег edittext и установить его в id edittext. Из-за этого вы можете избежать изменения позиции позиции.

 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); 

Наконец, добавьте наблюдателя текста в edittext и сохраните изменения в правильное положение в списке.

 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) { } }); 

См. Эту ссылку .. http://velmuruganandroidcoding.blogspot.in/2014/08/edittext-in-listview-android-example.html