Android Listview项目背景

Android Listview项目背景,android,android-listview,Android,Android Listview,如何更改列表项的背景图像,我一次只能更改1项背景。 如果列表中有6个项目,并且如果单击3个项目,则应更改这3个项目的背景图像,这是如何实现的 下面是我的代码 public class Places extends Activity { private ListView listView; private int selectedListItem = -1; private Handler mHandler = new Handler(); private V

如何更改列表项的背景图像,我一次只能更改1项背景。 如果列表中有6个项目,并且如果单击3个项目,则应更改这3个项目的背景图像,这是如何实现的 下面是我的代码

public class Places extends Activity {

    private ListView listView;


    private int selectedListItem = -1;
    private Handler mHandler = new Handler();
    private Vector<String> data; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.places_custom_list_view);
        data = new Vector<String>();

        // Add data as per your requirement   
        data.add("one");
        data.add("two");
        data.add("three");
        data.add("four");
        data.add("five");
        listView = (ListView)findViewById(R.id.ListView01);
        listView.setDivider(null);

        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                selectedListItem = position;
                ((EfficientAdapter)listView.getAdapter()).notifyDataSetChanged();

                mHandler.postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        // call any new activity here or do any thing you want here         

                    }
               }, 200L);
            }
        });

        listView.setAdapter(new EfficientAdapter(getApplicationContext()));   
    }

    private class EfficientAdapter extends BaseAdapter {
        private LayoutInflater mInflater;

        public EfficientAdapter(Context context) {
            mInflater = LayoutInflater.from(context);
        }

        public int getCount() {
            return data.size();
        }

        public Object getItem(int position) {
            return position;
        }

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

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

            ViewHolder holder;

            if (convertView == null || convertView.getTag() == null) {
                convertView = mInflater.inflate(R.layout.places_custom_row_view, null);
                holder = new ViewHolder();

                holder.txtName = (TextView) convertView
                    .findViewById(R.id.name);

                convertView.setTag(holder);
            } else {
                 holder = (ViewHolder) convertView.getTag();
            }

            if(position == selectedListItem) {  
                 holder.txtName.setBackgroundResource(R.drawable.cellbghover);
            } else {
                 holder.txtName.setBackgroundResource(R.drawable.cellbgnew);
            }

            holder.txtName.setText(data.get(position)); 

            return convertView;
        }
    }

    static class ViewHolder {
        TextView txtName;
    }
公共课堂场所扩展活动{
私有列表视图列表视图;
private int selectedListItem=-1;
私有处理程序mHandler=新处理程序();
专用矢量数据;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.places\u custom\u list\u视图);
数据=新向量();
//根据您的要求添加数据
数据。添加(“一”);
数据。添加(“两”);
数据。添加(“三”);
数据。添加(“四”);
数据。添加(“五”);
listView=(listView)findViewById(R.id.ListView01);
setDivider(null);
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
selectedListItem=位置;
((EfficientAdapter)listView.getAdapter()).notifyDataSetChanged();
mHandler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
//在这里呼叫任何新活动或做任何你想做的事情
}
},200L);
}
});
setAdapter(新的EfficientAdapter(getApplicationContext());
}
私有类EfficientAdapter扩展BaseAdapter{
私人停车场;
公共效率适配器(上下文){
mInflater=LayoutInflater.from(上下文);
}
public int getCount(){
返回data.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null | | convertView.getTag()==null){
convertView=mInflater.inflate(R.layout.places\u custom\u row\u view,null);
holder=新的ViewHolder();
holder.txtName=(TextView)convertView
.findviewbyd(R.id.name);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
如果(位置==selectedListItem){
holder.txtName.setBackgroundResource(R.drawable.cellbghover);
}否则{
holder.txtName.setBackgroundResource(R.drawable.cellbgnew);
}
holder.txtName.setText(data.get(position));
返回视图;
}
}
静态类视窗夹{
TextView-txtName;
}

每次单击listview项目时,整个listview都会刷新。 因此,如果您想显示以前选择的项目,还需要保留所有选定项目的记录。当listview刷新时,您需要根据设置的颜色检查这些位置是否以前选择过

希望这个能帮助你

试试这个

android:background="@drawable/img_list_background_repeater"
if(单击word.size()!=0)
{               

对于(inti=0;i试试这个,它应该在逻辑上工作。(顺便说一句,我没有试过!)

。。。
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
EfficientAdapter.saveState.put(位置“选定”);
mHandler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
//在这里呼叫任何新活动或做任何你想做的事情
}
},200L);
}
});
...
私有类EfficientAdapter扩展BaseAdapter{
public static HashMap saveState=new HashMap();
私人停车场;
公共效率适配器(上下文)
{
mInflater=LayoutInflater.from(上下文);

对于(int i=0;我确实需要同样的东西,你能给我一个例子吗?有了这个,我可以一次改变1个背景图像,正如我在问题中提到的,什么是adListText,点击索引和wordChk在这段代码中,我使用的是自定义ListView,你在selecteditem中存储位置。现在让我们假设这个selecteditem是arraylist.w当您从六个项目中单击项目1时。您的selecteditem arraylist中有1个项目,现在您选择了第四个项目,所以现在第四个项目将出现在您的arraylist中。现在在适配器类中,您将获得selecteditem arraylist的所有值,您可以更改这些位置的颜色。我认为这是非常简单的登录,但您需要解决此问题。希望如此将帮助您。非常感谢它为我工作,我对代码做了一些更改。在onitemclick中,我编写了下面的代码来使用您的代码选择和取消选择项目。public void onitemclick(AdapterView父级,视图视图,int位置,长id){selectedListItem=position;((EfficientAdapter)listView.getAdapter()).notifyDataSetChanged();if(EfficientAdapter.saveState.get(position)=“selected”){EfficientAdapter.saveState.put(position,“unselected”);}else EfficientAdapter.saveState.put(position,“selected”);mHandler.postDelayed(new Runnable(){@Override public void run(){},200L);}代替saveState.get(i)我已采用saveState.get(position)
if(clickWord.size()!=0)
{               
  for(int i = 0;i<clickWord.size();i++){                       

  if(clickWord.get(i).equalsIgnoreCase(adListText[position])&&clickIndex.get(i)==position){
    wordChk.setBackgroundResource(R.drawable.star_1);

   }
 }              
}
...
 listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {


                EfficientAdapter.saveState.put(position,"selected");                


                mHandler.postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        // call any new activity here or do any thing you want here                                 
                    }
               }, 200L);
            }
        });

    ...
    private class EfficientAdapter extends BaseAdapter {

        public static HashMap<Integer,String> saveState=new HashMap<Integer,String>();
        private LayoutInflater mInflater;

        public EfficientAdapter(Context context)
        {
            mInflater = LayoutInflater.from(context);
            for(int i=0;i<5;i++)
            {
               saveState.put(i,"unselected");
            }
        }
        public int getCount() {
            return data.size();
        }
        public Object getItem(int position) {
            return position;
        }
        public long getItemId(int position) {
            return position;
        }
        public View getView(int position, View convertView, ViewGroup parent) {

            ViewHolder holder;

            if (convertView == null || convertView.getTag() == null) {
                convertView = mInflater.inflate(R.layout.places_custom_row_view, null);
                holder = new ViewHolder();

                holder.txtName = (TextView) convertView
                    .findViewById(R.id.name);

                convertView.setTag(holder);
            } else {
                 holder = (ViewHolder) convertView.getTag();
            }            

            if(saveState.get(position).equals("selected"))
               holder.txtName.setBackgroundResource(R.drawable.cellbghover);  
            else
               holder.txtName.setBackgroundResource(R.drawable.cellbgnew);

            holder.txtName.setText(data.get(position)); 

            return convertView;
        }
    }

    static class ViewHolder {

        TextView txtName;
    }