私は2つのテキストビューを持つカスタムリストビューを持っています。私はエミュレータのD - パッドを使用する場合、すべて正常に動作し、行が選択されていますが、エミュレータ上の項目をクリックして(または電話で選択しようとすると)何も選択されません。Android - リストビュー項目を選択できない
addresslist.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:orientation="horizontal" android:paddingBottom="6dip"
android:paddingTop="4dip">
<TextView android:id="@+id/DENUMIRE_CELL"
android:layout_width="50dp" android:layout_height="wrap_content"
android:layout_weight="1.03" />
<TextView android:id="@+id/ADRESA_CELL" android:layout_width="50dp"
android:layout_height="wrap_content" android:layout_weight="0.84" />
</LinearLayout>
clienti.xml:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">
<TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal"
android:focusable="true" android:focusableInTouchMode="true">
<EditText android:id="@+id/editTextCauta"
android:layout_width="100dp" android:layout_height="wrap_content"
android:layout_weight="0.04" />
<Button android:id="@+id/buttonCauta" android:layout_width="70dp"
android:layout_height="wrap_content" android:text="Cauta" />
</LinearLayout>
</TableRow>
<TableRow android:id="@+id/tableRowHeader"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:background="#000000">
<LinearLayout android:orientation="horizontal">
<TextView android:id="@+id/textView1" android:layout_width="159dp"
android:layout_height="wrap_content" android:text="Denumire"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#BBBBBB" android:textSize="15sp" />
<TextView android:id="@+id/textView2" android:layout_width="159dp"
android:layout_height="wrap_content" android:text="Adresa"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#BBBBBB" android:textSize="15sp" />
</LinearLayout>
</TableRow>
<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:baselineAligned="false">
<ListView android:id="@+id/adresslist" android:layout_width="wrap_content"
android:choiceMode="singleChoice" android:layout_height="wrap_content"
android:scrollbars="horizontal|vertical" />
</TableRow>
</TableLayout>
コード:
public void adresalistBind()
{
listview = (ListView) findViewById(R.id.adresslist);
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
ArrayList<ClientClass> clientlist=new ArrayList<ClientClass>();
ClientClass.setClientContextForDB(this);
clientlist=ClientClass.ClientiGet();
listaAll=clientlist;
HashMap<String, String> map;
for(int i=0;i<clientlist.size();i++)
{
map = new HashMap<String, String>();
map.put("denumire", clientlist.get(i).getDenumire());
map.put("adresa", clientlist.get(i).getAdresa());
map.put("clientid", String.valueOf(clientlist.get(i).getClientID()));
mylist.add(map);
}
SimpleAdapter mAdapter = new SimpleAdapter(this, mylist, R.layout.addresslist,
new String[] {"denumire", "adresa"}, new int[] {R.id.DENUMIRE_CELL, R.id.ADRESA_CELL});
listview.setAdapter(mAdapter);
listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listview.setSelection(1);
listview.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> adaptview, View clickedview, int position,
long id)
{
//adaptview.setSelected(true);
listview.setSelection(position);
}
public void onNothingSelected(AdapterView<?> arg0)
{
}
});
listview.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> adaptview, View arg1,
int position, long arg3)
{
//adaptview.setSelected(true);
// View rowview = (View) adaptview.getChildAt(position);
// rowview.setSelected(true);
listview.setSelection(position);
//Toast.makeText(ClientiForm.this, (String) listview.getItemAtPosition(position).toString(), 10000).show();
}
});
listview.setOnItemLongClickListener(new OnItemLongClickListener()
{
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int position, long arg3)
{
listview.setSelection(position);
openOptionsMenu();
Toast.makeText(ClientiForm.this, (String) listview.getItemAtPosition(position).toString(), 10000).show();
return false;
}
});
}
あなたのコードは動作していますが、複数の項目をチェックするので、一度に1つだけチェックしたいと思います。私は現在の項目をチェックretriveしようとしたが、それはこのように働いていない:(listview.getCheckedItemPosition()> = 0) \t \t場合(listaAll.size()> 0) \t \t \t { \t \t \t \t場合\t \t { \t \t \t \t \t Clientid = listaAll.get(listview.getCheckedItemPosition())。getClientID(); \t \t \t \t \t startActivity(新しいインテント(ClientiForm.this、ClientiDetaliiForm.class)); \t \t \t \t} \t \t \t他\t \t \t \t \t { \t \t \t \t \t Toast.makeText(ClientiForm.this、 "Alegeti国連クライアント!"、10000).SHOW(); \t \t \t \t} \t \t \t \t \t \t \t} –
あなたが追加したことを確認してください 'view.setClickable(偽)'アダプタの 'getViewメソッドで()'。または 'CheckableLinearLayout'から' setClickable(true) 'を削除してください。 – inazaruk
addresslist.xmlのCheckableLinearLayoutにandroid:clickable = "false"を追加しましたが、複数の項目をチェックします –