我正在我的代码中实现ListView
。但是当我点击这些项目时,它不会以任何方式响应点击。有人可以帮帮我吗?提前谢谢。
这是代码。
public class ListaActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.provacomunicazione.MESSAGE";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lsta);
Resources res = getResources();
String[] Authors = res.getStringArray(R.array.Lista_Nomi_E_Cognomi_Autori);
ArrayList<String> Autori = new ArrayList<String>();
for (String temp:Authors) {
Autori.add(temp);
}
Collections.sort(Autori);
ArrayList<String> AutoriLetteraSelezionata = new ArrayList<String>();
for (String temp:Autori) {
if (temp.charAt(0)=='A') {
AutoriLetteraSelezionata.add(temp);
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.textviewitem, AutoriLetteraSelezionata);
ListView listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(adapter);
listView.setClickable(true);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CharSequence autore = "("+((TextView)view).getText()+")";
Intent i = new Intent(ListaActivity.this, SecondaryActivity.class);
i.putExtra(EXTRA_MESSAGE, autore);
startActivity(i);
});
}
}
答案 0 :(得分:35)
您应该在项目列表视图中定义所有子对象(TextView,ImageView等):
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
对于根项RelativeLayout / LinearLayout等,定义:
android:clickable="false"
android:descendantFocusability="blocksDescendants"
android:focusable="false"
android:focusableInTouchMode="false"
如果你不定义那些,他们将“抓住”点击事件。 如果您有自定义listView适配器,请检查您是否覆盖:
@Override
public boolean isEnabled(int position)
{
return true;
}
答案 1 :(得分:0)
就我而言,问题实际上是ListView
包含HorizontalScrollView
s。
HSV会消耗对项目的点击,并且不会将OnItemClick返回到ListView
。
我在适配器中写了一个OnClickListener
来解决问题,该适配器返回ListView
的回调。见这里:https://stackoverflow.com/a/43653085/2914140。
答案 2 :(得分:-3)
在客户项目中,
设置每个元素
android:clickable="true"
android:focusable="false"
适合我