ListViewのItem選択について

249 views
Skip to first unread message

Junichi Maruyama

unread,
Jun 1, 2010, 2:18:19 AM6/1/10
to android-g...@googlegroups.com
ドララと申します。

既出かもしれませんが、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;

        }
       
    }

}


本件についてどなたか解決策をご存知の方がおられましたら

ご教授いただければ幸いです。

よろしくお願いいたします。

aharisu

unread,
Jun 1, 2010, 3:39:15 AM6/1/10
to android-g...@googlegroups.com
aharisuです。
 
xmlのレイアウトファイル中のボタン(R.id.detailButtonのボタンです)
のfocusableをfalseにしてみるのはどうでしょうか。
他にもCheckBox等があるのであればそれも同じようにして試してみてください。

2010年6月1日15:18 Junichi Maruyama <script...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

Junichi Maruyama

unread,
Jun 1, 2010, 3:54:08 AM6/1/10
to android-g...@googlegroups.com
aharisu様


ドララと申します。
迅速にご回答いただき、まことにありがとうございした。
教えていただいた通りの方法で試したところ、
Item選択できるようになりました。

ありがとうございます。




2010年6月1日16:39 aharisu <foo.y...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages