1

私のlistadapterのgetViewメソッドでは、リスト内のアイテムを選択すると、この選択されたアイテムの背景画像が特定の画像を取得し、リストの他のアイテムがデフォルトの背景画像を取得します。これを行うために for ループを実装しましたが、行からアイテムを選択しても背景画像は変わりません.. ボタンのクリックで背景画像を変更できますか? 私のコードは大丈夫だと信じているので、どこが間違っていますか。選択した項目にチェックを入れる部分です。

位置 = 位置;

    size = main.items.size()-1;

    holder.row.setOnClickListener(new OnClickListener() {

        @Override

        public void onClick(View v) {

            int x = position + 1;

               for (int i=0;i<size;i++){

                   holder.row.setBackgroundResource(R.drawable.layer_unselected);

                   holder.text.setTextColor(Color.WHITE);

                   if (x==main.items.size()-1){

                       holder.row.setBackgroundResource(R.drawable.layer_selected);

                       holder.text.setTextColor(Color.BLACK);

                   }    

               }

               System.out.println("selected layer: "+ x );

               System.out.println("selected layer pos: "+pos);

               System.out.println("selected layer size: "+size);


               main.selectItem(position+1);

        }
    });
4

3 に答える 3

1

交換

holder.row.setBackgroundResource(R.drawable.layer_unselected);
holder.row.setBackgroundResource(R.drawable.layer_selected);

  1. ボタンの背景用

    holder.row.setBackgroundDrawable(getResources().getDrawable(R.drawable.layer_unselected));
    holder.row.setBackgroundDrawable(getResources().getDrawable(R.drawable.layer_selected));
    
  2. ImageView の背景用

    holder.row.setImageDrawable(getResources().getDrawable(R.drawable.layer_unselected));
    holder.row.setImageDrawable(getResources().getDrawable(R.drawable.layer_selected));
    
于 2013-02-22T05:40:55.063 に答える
0

text_color_selector.xml

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

<item android:state_pressed="true" android:color="#ff8800"/>
 <!-- pressed -->
<item android:state_focused="true" android:color="#ff8800"/>
 <!-- focused -->
<item android:color="@color/textColor"/>
<!-- default -->

</selector>

main.xml

<Button
       android:id="@+id/button1"
       android:layout_width="0dp"
       android:layout_height="match_parent"
       android:text="Button"
       android:textColor="@drawable/text_color_selector" />
于 2013-02-22T06:19:27.370 に答える
0

MyListAdapter

private class MyListAdapter extends BaseAdapter 
{

    private List<HashMap<String,String>> List;
    private LayoutInflater mInflater;
    private int layoutresource;

    public MyListAdapter(Context context,int resource,List<HashMap<String, String>> myList) {
        List = myList;
        mInflater = LayoutInflater.from(context);
        layoutresource = resource;
    }

    @Override
    public int getCount() {
        return List.size();
    }

    @Override
    public Object getItem(int position) {
        return List.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            convertView = mInflater.inflate(layoutresource,null);
        }    

        final View rootView = convertView.findViewById(R.id.root);

        Button btnFav = (Button) convertView.findViewById(R.id.btnFav); 
        MyTextView name = (MyTextView) convertView.findViewById(R.id.textName);
        MyTextView variety = (MyTextView) convertView.findViewById(R.id.textVariety);
        MyTextView price = (MyTextView) convertView.findViewById(R.id.textPrice);

        btnFav.setBackgroundDrawable(getResources().getDrawable(R.drawable.remove_fav_button_selector));
        name.setText( List.get(position).get(TAG_NAME));
        variety.setText(List.get(position).get(TAG_VARIETY));
        price.setText(List.get(position).get(TAG_PRICE));

        rootView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();
                Intent in = new Intent(MainActivity.this, DetailsActivity.class);
                in.putExtra("ID", List.get(position).get(TAG_ID));
                startActivity(in);
            }
        });

        return convertView;
    }
}
于 2013-02-22T05:57:37.810 に答える