1

デフォルトでは、水平リストビューで強調表示された1つのアイテムを表示する必要があり、ユーザーが水平リストビューで別のアイテムを選択したときに、そのアイテムを強調表示したい(以前のものを削除して、現在選択されているものを強調表示する)次のコード、私のアダプターで

アダプタ:-

 int selectedIndex;
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
   View v = convertView;
   v = LayoutInflater.from(parent.getContext()).inflate(
        R.layout.hlist_rowitem, null);

  if (position == selectedIndex) {
    v.setBackgroundColor(Color.parseColor("#abcdef"));
 }
}

リストビューからアクティビティから別のアイテムを選択した後、アイテムの強調表示位置を変更するためにアクティビティで何をすべきか。

アクティビティ:-

int sIndex;
sIndex = getIntent().getIntExtra("POSITION", 0);
hlAdapter = new HSelectedAdapter(InsuranceCard.this, rowItems, sIndex);
hListView.setAdapter(hlAdapter);
hListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
 //other code goes here
}
});
4

4 に答える 4

2

色の状態のリスト リソースを使用し、ListView でsetSelection(position)を使用して選択を処理します。

カラーリストは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#aabbcc"/> <!-- pressed -->
    <item android:state_activated="true"
          android:color="#fedcba"/> <!-- selected -->
    <item android:color="#abcdef"/> <!-- default -->
</selector>

R.layout.hlist_rowitemまたはリストビューの背景として設定する必要がありますlistSelector

編集:クリックイベントを受け取ったときに選択を変更するには:

hListView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
        hListView.setSelection(position);
    }
});

ListView は、古い/既定のアイテムの選択を解除し、指定された位置で新しいアイテムを選択します。

編集 2: デフォルトでは、ListView には選択モードが設定されていないため、必ず xml またはコードで設定してください。listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

于 2014-07-08T11:40:27.320 に答える
1

これは 2 つの方法で実現できます。

  1. onItemClick() で選択されたすべてのアイテムとセットを手動でクリアします

    listview.setOnItemClickListener(new OnItemClickListener() {
    
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
    
            for (int i = 0; i < adapter.getCount(); i++) {
            View item = listview.getChildAt(i);
            if (item != null) {
                item.setBackgroundResource(R.drawable.unselected);
            }
            arg1.setBackgroundResource(R.drawable.selected);
        }
    
        }
    });
    
  2. セレクターを使用して、リストビューに任せてください。

/drawable/selector_list.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

   <item android:drawable="@drawable/selected" android:state_selected="true"/>
   <item android:drawable="@drawable/selected" android:state_activated="true"/>
   <item android:drawable="@drawable/unselected"/>

</selector>

リストビューに追加android:listSelector="@drawable/selector_list"します

于 2014-07-08T11:41:01.653 に答える
0

次の手順に従います。1) ブール配列を 1 つ宣言します。public static boolean ClickItem[]; 2) oncreate ClickItem=new boolean[あなたの配列サイズ] 内; Arrays.fill(ClickItem, false);

あなたのアダプターでこのコードを書いてください a)
if ClickItem[pos] { v.setBackgroundColor(Color.parseColor("#abcdef")); }そうしないと

a) v.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        Arrays.fill(ClickItem, false);
            ClickItem[pos]=true;

            adapter1.notifyDataSetChanged();


        }
    });
于 2014-07-08T11:45:53.997 に答える
0

drawblw フォルダーに listitemclick.xml を追加します。これがコードです。2)次に、hlist_rowitem.xml で background="@drawable/listitemclick" を設定します。

于 2014-07-08T11:34:55.447 に答える