Intereting Posts
Неправильные временные метки представления при обратном просмотре через видео MP4 Понимание атрибутов XML для пользовательских пакетов Каково использование ключевого слова final? Автоматическая версия с номером вашей Android-приложения с использованием Git и Eclipse Как переключать темы (ночной режим) без перезапуска? Как получить ресурсы по имени (строка), а не по целому числу Дублированная анимация после обновления на Android Jelly Beans Что означает «уникальный посетитель» в контексте Google Analytics на Android? Нечетная ошибка logcat при переключении на новый фрагмент Удаленные изображения в ListView с шаблоном ViewHolder Как разместить изображение в верхней части другого изображения в Android Как отформатировать активность из другого мероприятия с помощью опций меню Как получить высоту кнопки, чтобы соответствовать высоте другого элемента? Android SDK DDMS в Eclipse не распознает мой Android-телефон Размер растрового изображения, возвращаемого камерой с помощью намерения?

OnListItemClick не работает для listview?

Привет, onListItemClick для listview не работает. Здесь я получаю данные из SQLite, используя AsyncTask и отображая его в виде списка. И я хочу сделать некоторые действия, когда щелкнул список в списке. Но щелчок не происходит. Я много пробовал для этого. Пожалуйста, помогите мне. Вот мой код

package com.applexus.app.mobilesalesorder; import java.util.ArrayList; import java.util.Map; import java.util.TreeMap; import com.applexus.app.library.sql.SqlConnector; import android.app.ListActivity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.inputmethod.EditorInfo; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; public class SoldToPartiesList extends ListActivity { private ArrayList<String> data = new ArrayList<String>(); private ArrayList<String> idk = new ArrayList<String>(); private ArrayList<String> name1 = new ArrayList<String>(); private ArrayList<String> inco1 = new ArrayList<String>(); private ArrayList<String> email = new ArrayList<String>(); private ArrayList<String> tel = new ArrayList<String>(); private ArrayList<String> vwerk = new ArrayList<String>(); private SharedPreferences prefs; private String prefNamesalesorgid = "salesorgid"; private String prefNamedistchnlid = "distchnlid"; private String prefNamedivid = "divid"; private String prefName = "mso"; private TextView titlename; private static class ViewHolder { TextView tvlist; TextView tvlistsmall; } private class EfficientAdapter extends BaseAdapter { private Context context; LayoutInflater inflater; public EfficientAdapter(Context context) { // TODO Auto-generated constructor stub this.context = context; inflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return data.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; final int place = position; if (convertView == null) { convertView = inflater.inflate(R.layout.listso, null); holder = new ViewHolder(); holder.tvlist = (TextView) convertView .findViewById(R.id.textViewlist); holder.tvlistsmall = (TextView) convertView .findViewById(R.id.textView1); convertView.setTag(holder); // } else { holder = (ViewHolder) convertView.getTag(); } holder.tvlist.setText(idk.get(position)); holder.tvlistsmall.setText(data.get(position)); return convertView; } } Map<String, String> map = new TreeMap<String, String>(); SqlConnector con; String salorg; String distch; String division; Context co = this; Boolean searchable=false; TextView tvmc; TextView tvmn; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.materiallist); titlename = (TextView) findViewById(R.id.textViewtitle); titlename.setText(R.string.soldtoparties); tvmc=(TextView)findViewById(R.id.textViewmc); tvmn=(TextView)findViewById(R.id.textViewmn); prefs = getSharedPreferences(prefName, MODE_PRIVATE); salorg = (prefs.getString(prefNamesalesorgid, "")); distch = (prefs.getString(prefNamedistchnlid, "")); division=(prefs.getString(prefNamedivid, "")); DownloadWebPageTask task = new DownloadWebPageTask(); task.execute(new String[] { null }); // ListView lv=(ListView)findViewById(android.R.id.list); // lv.setOnItemSelectedListener(new ) } EditText es; LinearLayout ls; LinearLayout mc; LinearLayout mn; Boolean searchFlag = false; String search; @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); es = (EditText) findViewById(R.id.editTextSearch); ls = (LinearLayout) findViewById(R.id.linearLayoutsearch); } private class DownloadWebPageTasksearch extends AsyncTask<String, Void, String> { Cursor c; ProgressBar pb; @Override protected String doInBackground(String... urls) { con = new SqlConnector(co); try { if (searchFlag) { c = con.select("select Kunnr,Name,Name1,Inco1,Vwerk,SmtpAddr,Telf1 from tb_soldtoparties where salesorg='" + salorg + "' and channel='" + distch + "' and Name like '%"+search+"%' and division='"+division+"';"); } else { c = con.select("select Kunnr,Name,Name1,Inco1,Vwerk,SmtpAddr,Telf1 from tb_soldtoparties where salesorg='" + salorg + "' and channel='" + distch + "' and Kunnr like '%"+search+"%' and division='"+division+"';"); } } catch (Exception e) { e.printStackTrace(); } int in = c.getCount(); c.moveToFirst(); for (int i = 0; i < in; i++) { idk.add(c.getString(0)); data.add(c.getString(1)); name1.add(c.getString(2)); inco1.add(c.getString(3)); vwerk.add(c.getString(4)); email.add(c.getString(5)); tel.add(c.getString(6)); c.moveToNext(); } return null; } @Override protected void onPostExecute(String result) { setListAdapter(new EfficientAdapter(SoldToPartiesList.this)); pb = (ProgressBar) findViewById(R.id.progressBar1); pb.setVisibility(View.INVISIBLE); searchable=true; con.close(); } @Override protected void onPreExecute() { super.onPreExecute(); idk.clear(); data.clear(); name1.clear(); inco1.clear(); vwerk.clear(); email.clear(); tel.clear(); setListAdapter(new EfficientAdapter(SoldToPartiesList.this)); pb = (ProgressBar) findViewById(R.id.progressBar1); pb.setVisibility(View.VISIBLE); searchable=false; } } private class DownloadWebPageTask extends AsyncTask<String, Void, String> { Cursor c; ProgressBar pb; @Override protected String doInBackground(String... urls) { con = new SqlConnector(co); try { c = con.select("select Kunnr,Name,Name1,Inco1,Vwerk,SmtpAddr,Telf1 from tb_soldtoparties where salesorg='" + salorg + "' and channel='" + distch + "' and division='"+division+"';"); } catch (Exception e) { e.printStackTrace(); } int in = c.getCount(); c.moveToFirst(); Log.d("size", "" + in + ""); for (int i = 0; i < in; i++) { idk.add(c.getString(0)); data.add(c.getString(1)); name1.add(c.getString(2)); inco1.add(c.getString(3)); vwerk.add(c.getString(4)); email.add(c.getString(5)); tel.add(c.getString(6)); c.moveToNext(); } return null; } @Override protected void onPostExecute(String result) { setListAdapter(new EfficientAdapter(SoldToPartiesList.this)); pb = (ProgressBar) findViewById(R.id.progressBar1); pb.setVisibility(View.INVISIBLE); searchable=true; con.close(); } @Override protected void onPreExecute() { super.onPreExecute(); idk.clear(); data.clear(); name1.clear(); inco1.clear(); vwerk.clear(); email.clear(); tel.clear(); pb = (ProgressBar) findViewById(R.id.progressBar1); pb.setVisibility(View.VISIBLE); searchable=false; } } // class ClickOnList implements OnItemClickListener // { // @Override // public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, // long arg3) { // Log.d("ListView", "Position"+arg2); // // } // // } // public OnItemClickListener theListListener = new OnItemClickListener() { // // public void onItemClick(android.widget.AdapterView<?> parent, View v, int position, long id) { // Log.d("position",position+""); // } }; @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); int place=position; Log.d("position",position+""); } } 

А код макета – materiallist.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/bluebg" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/bar1" android:gravity="center_vertical" android:minHeight="50dp" android:orientation="horizontal" > <LinearLayout android:id="@+id/linearLayout2" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_margin="5dp" android:layout_weight="1" android:gravity="center_vertical|left" > <TextView android:id="@+id/textViewtitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:shadowColor="#000000" android:shadowDx="1" android:shadowDy="1" android:shadowRadius="1.5" android:text="@string/materials" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout3" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_margin="5dp" android:gravity="center" > <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="visible" /> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout3" android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/linearLayout4" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:gravity="center" > <EditText android:id="@+id/editTextSearch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:layout_weight="1" android:hint="@string/search" android:imeOptions="actionDone" android:inputType="textUri" > </EditText> </LinearLayout> <LinearLayout android:id="@+id/linearLayoutsearch" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center" android:clickable="true"> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:src="@drawable/search" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/linearLayout6" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout7" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/listbg2" > <LinearLayout android:id="@+id/linearLayoutmc" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:background="@drawable/lbg1" android:gravity="center" > <TextView android:id="@+id/textViewmc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="Code" android:textColor="@color/black" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayoutmn" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:background="@drawable/lbg2" android:gravity="center" > <TextView android:id="@+id/textViewmn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="Name" android:textColor="@color/black" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/linearLayout10" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="@color/offwhite" > </ListView> </LinearLayout> </LinearLayout> 

И listso3.xml – это

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/lbg" android:orientation="vertical" > <TextView android:id="@+id/textViewNamelist3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="@color/black" android:focusable="false"/> <TextView android:id="@+id/textViewKunn2list3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginLeft="5dp" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="@color/black" android:focusable="false"/> </LinearLayout> 

Solutions Collecting From Web of "OnListItemClick не работает для listview?"

Добавьте ниже код в свой TextView в XML

 android:focusableInTouchMode="false" android:clickable="false" android:focusable="false" 

и попробуй еще раз.

Еще одно простое решение: добавить android:descendantFocusability="blocksDescendants" в корневую группу представлений.

Вы должны добавить android:focusable="false" для элементов строки ListView, чтобы сделать ListView Clikable. Поскольку представления в строке ListView получают фокус, поэтому ListView не настраивается. Итак, в вашем случае вы можете добавить android:focusable="false" в TextViews вашей строки ListView.

У меня были те же симптомы, и это немного сбило меня с ума. Добавление android:focusable="false" для элементов списка, как было предложено выше, исправило проблему для меня.

Но реальная проблема заключалась в том, что я установил android:textIsSelectable="true" для моих элементов списка (в ответ на предупреждение, созданное Eclipse); android:textIsSelectable="false" исправил проблему для меня, и мне вообще не нужен параметр android:focusable="false" .

Другое решение. Если у вас много дочернего android:focusable="false" управления, и ему android:focusable="false" добавить android:focusable="false" для каждого дочернего android:focusable="false" управления, вы можете добавить android:descendantFocusability="blocksDescendants" в свой parent-control.try.

Я боролся с этим какое-то время – ни один из предоставленных решений не работал для меня. В конце концов я обнаружил, что вызов getListView() в моем onViewCreated() сделал трюк, хотя я понятия не имею, почему. Это для фрагмента, а не для действия; Не уверен, что это имеет значение.

 public class NewsListFragment extends ListFragment { private ListView listView; ... @Override public void onViewCreated(View view, Bundle savedInstanceState) { newsListView = getListView(); } @Override public void onListItemClick(ListView l, View v, int position, long id) { // this now works as expected } } 

Я также боролся с этой проблемой, и ни одно из предлагаемых решений не работало. Моя проблема была в том, что я сделал переопределение для onViewCreated но не вызывал super.onViewCreated(view, savedInstanceState); , Надеюсь, это поможет кому-то еще, чтобы они не тратили часы, пытаясь понять, что происходит.

Я боролся, поскольку я по ошибке ставил android: inputType = "textCapWords" с текстовым полем после удаления его исправлено

Только строка ниже работала для меня:

 android:descendantFocusability="blocksDescendants" 

Весь list_view_item.xml:

 <?xml version="1.0" encoding="utf-8"?> <!--android:focusableInTouchMode="false"--> <!--android:focusable="false"--> <!--android:clickable="false"--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:descendantFocusability="blocksDescendants" android:layout_height="wrap_content"> <CheckBox android:id="@+id/checkBox_list_view_checkBox" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/checkBox_list_view_textView" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

Вышеприведенное должно использоваться в getView как:

 convertView=LayoutInflater.from(getContext()) .inflate(R.layout.list_view_item, parent, false); 

`