ドララと申します。
既出かもしれませんが、ListViewについて質問させてください。
ListViewにおいて、各ItemのLayoutを既存のsimple_list_item_1.xmlなどではなく
独自で定義したLayoutを使ってリストを画面に表示させたところ、
Itemをタッチしても背景色が変わらないようになってしまいました。
また、ListViewオブジェクトについて、ItemClickListenerを登録し、LogでタッチされたItemの
position値を出力しようとしたところ、何も出力されませんでした。
下記にソースコードを添付いたします。
public class ListSampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ItemBean yahoo = new ItemBean();
yahoo.setName("dorara");
yahoo.setUrl("
http://www.dorara.com");
ItemBean google = new ItemBean();
google.setName("Google");
google.setUrl("
http://www.google.co.jp");
List<ItemBean> list = new ArrayList<ItemBean>();
list.add(yahoo);
list.add(google);
ListAdapter adapter = new ListAdapter(getApplicationContext(),list);
ListView lv = (ListView)this.findViewById(R.id.list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("JKO3", "list item clicked ["+position+"]");
}
});
}
class ListAdapter extends ArrayAdapter<ItemBean>{
private LayoutInflater mInflater;
private TextView mTitle;
private Button mButton;
public ListAdapter(Context context, List<ItemBean> objects) {
super(context, 0, objects);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row, null);
}
final ItemBean item = this.getItem(position);
if(item != null){
mTitle = (TextView)convertView.findViewById(R.id.nameText);
mTitle.setText(item.getName());
mButton = (Button)convertView.findViewById(R.id.detailButton);
mButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Uri uri = Uri.parse(item.getUrl());
Intent i = new Intent(Intent.ACTION_VIEW,uri);
startActivity(i);
}
});
}
return convertView;
}
}
}
本件についてどなたか解決策をご存知の方がおられましたら
ご教授いただければ幸いです。
よろしくお願いいたします。