Activity
クラスコード:
conversationList = (ListView)findViewById(android.R.id.list);
ConversationArrayAdapter conversationArrayAdapter=new ConversationArrayAdapter(this, R.layout.conversation_list_item_format_left, conversationDetails);
conversationList.setAdapter(conversationArrayAdapter);
conversationList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Log.d("test","clicked");
}
});
getView
クラス内の関数Adapter
:
if (v == null) {
LayoutInflater vi = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(leftSideMessageNumber.equals(m.getTo())) {
v = vi.inflate(R.layout.conversation_list_item_format_left, null);
} else {
v = vi.inflate(R.layout.conversation_list_item_format_right, null);
}
}
膨張中に 2 つの XML を使用すると問題がありますか?
ベストアンサー1
ここからディープクリックで解決策を見つけました。
リストの行項目にフォーカス可能またはクリック可能なビューが含まれている場合はOnItemClickListener
機能しません。
行項目には のようなパラメータが必要ですandroid:descendantFocusability = "blocksDescendants"
。
ここでは、リスト項目がどのように表示されるかの例を確認できます。リスト項目の xml は次のようになります... row_item.xml
( your_xml_file.xml
)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:descendantFocusability="blocksDescendants"
android:gravity="center_vertical" >
// your other widgets here
</LinearLayout>