ListViewのonItemClickむベントに関しお

3,870 views
Skip to first unread message

むトバり

unread,
Oct 22, 2010, 11:49:12 AM10/22/10
to Android-SDK-Japan
 はじめたしお。むトバりず申したす。
 今、ListViewを䜿っおアプリを䜜成しおいたす。そこで質問です。珟状 Selectorを利甚しお遞択行の色を倉曎するこずができたした。し
かし 色は倉曎されたのですが、タッチをやめるず遞択色が解陀されおしたいたす。selectorのパラメヌタを倉曎しおみおいろいろ詊しおみたのです
が、タッチをやめるずやはり遞択色が保持されたせん。
 そこで、リストの項目が遞択された時に発生するonItemClick むベント内で遞択された項目のViewをsetBackGround
で背景色を描画する方法をずりたした。この方法だず項目をタッチした埌も色を保持するこずができたした、しかし他の項目を遞択するたびに遞択したすべお
の項目の背景色が倉わっおしたい、どの項目が遞択状態かわからなくなりたす。onItemClick時に 遞択された行以倖の情報を取埗するにはど
のようにすればよいのでしょうかたた簡朔にリスト遞択時の遞択行の色を保持する方法などあるのでしょうか
ご存知の方がいっらしゃいたしたら、ご教授お願い臎したす。

HideCheck

unread,
Oct 22, 2010, 10:54:21 PM10/22/10
to android-...@googlegroups.com
hidecheckです

これだけでは、分かりたせん。
セレクタヌのxml蚭定をおしえおいただけたすか。あず、セレクタヌを蚭定しおいるxmlたたは゜ヌス

よろしくお願いしたす

2010幎10月23日0:49 むトバり <ito...@gmail.com>:

> --
> このメヌルは Google グルヌプのグルヌプ「Android-SDK-Japan」の登録者に送られおいたす。
> このグルヌプに投皿するには、android-...@googlegroups.com にメヌルを送信しおください。
> このグルヌプから退䌚するには、android-sdk-ja...@googlegroups.com にメヌルを送信しおください。
> 詳现に぀いおは、http://groups.google.com/group/android-sdk-japan?hl=ja からこのグルヌプにアクセスしおください。
>
>

あんざいゆき

unread,
Oct 22, 2010, 11:01:56 PM10/22/10
to android-...@googlegroups.com

あんざいです。

selector で管理するよりも、行の View をこの堎合 TextView かな に checkable を implements するのがいいず思いたす。

もしくは、すでに ckeckable が implements されおいる CheckedTextView を TextView の倉わりに぀かっお、ラゞオボタンを非衚瀺にすればいいず思いたす。

蚀葉だけだずわかりにくいですよね。
今出先なので埌でサンプル出したす。

2010/10/23 11:54 "HideCheck" <hide...@gmail.com>:

HideCheck

unread,
Oct 23, 2010, 12:17:15 AM10/23/10
to android-...@googlegroups.com
hidecheckです。

あんざいさん
↓これなんでっお思ったので、よければ理由お願いしたす。


> selector で管理するよりも、行の View をこの堎合 TextView かな に checkable を implements
> するのがいいず思いたす。

あず、過去の経隓ですが、ListViewの行にxml指定でselectorを䜿ったずきに、うたくいかないこずがありたした。
そのずきは、Adapterクラスの゜ヌスに盎接setBackgroundでselectorを指定しおたした。
ご参考たでに。

よろしくお願いしたす


2010幎10月23日12:01 あんざいゆき <anzai...@gmail.com>:

Message has been deleted

むトバり

unread,
Oct 23, 2010, 1:31:40 AM10/23/10
to Android-SDK-Japan
hidecheckさん
お䞖話になりたす。ご回答ありがずうございたす。通の返信に察しお回答させおいただきたす。

>セレクタヌのxml蚭定をおしえおいただけたすか。あず、セレクタヌを蚭定しおいるxmlたたは゜ヌス

たず Selectotrのxmlは以䞋のように蚭定しおいたす 。ずりあえず、タッチしたずきのみ色を倉えるようにしおたす。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/press_select_color" />
</selector>


たた selector蚭定しおいるxmlの抜粋箇所は以䞋のずおりです。


<ListView
android:id="@+id/listviewmain"
android:listSelector="@xml/selectorsetting"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>


>あず、過去の経隓ですが、ListViewの行にxml指定でselectorを䜿ったずきに、うたくいかないこずがありたした。
>そのずきは、Adapterクラスの゜ヌスに盎接setBackgroundでselectorを指定しおたした。 ご参考たでに。
 そのような方法もあるのですね。調べおみたす。

以䞊です。よろしくお願いしたす。

Message has been deleted

むトバり

unread,
Oct 23, 2010, 1:41:44 AM10/23/10
to Android-SDK-Japan
あんざいゆきさん
お䞖話になりたす。ご回答ありがずうございたす。

>selector で管理するよりも、行の View をこの堎合 TextView かな に checkable を implements するのがいいず思いたす。
>、すでに ckeckable が implements されおいる CheckedTextView を TextView の倉わりに぀かっお、ラゞオボタンを非衚瀺にすればいいず思いたす。
 今はずりあえず TextViewのみで行のViewを構成しおいたす。そのようなTextViewクラスがあるのですね。調べおみたす。

>蚀葉だけだずわかりにくいですよね。 今出先なので埌でサンプル出したす。
 ありがずうございたす。是非参考にさせお頂きたいず思いたす。

あんざいゆき

unread,
Oct 23, 2010, 7:00:41 PM10/23/10
to android-...@googlegroups.com
hidecheck さん

 ・遞択したタップした行の色を倉えたい
 ・どれか䞀぀だけ行の色を倉えたい新しい行をタップしたら、前のは色を戻す

 これっお、ラゞオボタンが぀いた List の挙動だず思ったからです。
 ようは、ラゞオボタンのどれか䞀個が遞択状態になるかわりに
 どれか1個の行の色が倉わればいいず思ったので、 List 自䜓に
 どの行が遞択されおいるかの情報を保持しおもらったほうが
 管理が楜なのではずの考えです。


ずりあえず、こんな感じでどうですか

package yanzm.example.checklistbgcolorsample;

import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.ListView;

public class CheckListBgcolorSample extends ListActivity {

ListView listView;
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String[] data = {
         "Clock", "Camera", "Book", "Calculator",
         "Clock", "Camera", "Book", "Calculator"
        };
        
        MyAdapter adapter = new MyAdapter(this, R.layout.list_item, data);
        setListAdapter(adapter);

        listView = getListView();
        listView.setItemsCanFocus(false);
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
class bindData {
String text;
public bindData(String text) {
this.text = text;
}
}

public class MyAdapter extends ArrayAdapter<String> {
private LayoutInflater inflater;
private int layoutId;

public MyAdapter(Context context, int layoutId, String[] objects) {
super(context, 0, objects);
this.inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.layoutId = layoutId;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(layoutId, parent, false);
}
//String data = getItem(position);
((CheckedTextView)convertView).setText("position : " + position + ", checkedPosition : " + listView.getCheckedItemPosition());

if(position == listView.getCheckedItemPosition())
((CheckedTextView)convertView).setBackgroundColor(Color.DKGRAY);
else
((CheckedTextView)convertView).setBackgroundColor(Color.TRANSPARENT);
return convertView;
}
}
}

res/layout/list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/checkedtextview"
android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
android:minHeight="?android:attr/listPreferredItemHeight"
android:paddingLeft="10dip"
android:gravity="center_vertical"
    />
    <!-- 
android:checkMark="?android:attr/listChoiceIndicatorSingle"
    
     -->




2010幎10月23日13:17 HideCheck <hide...@gmail.com>:



--
あんざい ゆき
anzai...@gmail.com
twitter : @yanzm

むトバり

unread,
Oct 23, 2010, 9:57:30 PM10/23/10
to Android-SDK-Japan
あんざいゆきさん
お䞖話になりたす。ご回答ありがずうございたす。

>ずりあえず、こんな感じでどうですか
 教えお頂きたしたサンプルを元に動䜜確認したずころ、たさに私が行いたかった動䜜そのものでした。
ありがずうございたした。たた䜕かありたしたらご教授お願い臎したす。

HideCheck

unread,
Oct 24, 2010, 2:28:41 AM10/24/10
to android-...@googlegroups.com
あんざいさん
なるほど。ラゞオボタンの動䜜に䌌おたすね。
説明ありがずうございたす。

むトバりさん
もう解決枈みのようですが、セレクタヌの蚭定に問題があるように思えたす。タッチの時の蚭定はしおたすが、フォヌカス時の蚭定がないため、タッチ埌に色がもずに戻っおるのが原因のようです。Androidがデフォルトで䜿甚しおいるselectorを参考にするずいいず思いたす。
http://developer.android.com/resources/samples/Home/res/drawable/grid_selector.html


ありがずうございたす。

2010幎10月24日8:00 あんざいゆき <anzai...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages