Android列表项背景问题

时间:2011-06-30 12:22:19

标签: android listview

如何在android中获取类似ListView功能的gmail。我的意思是当我点击特定的列表项时,它应该改变它的背景颜色(灰色),以便用户可以知道该项已经被点击并且它应该保持其状态。 android中有没有简单的功能来实现它?我知道我可以改变我的布局的背景颜色,但是当我滚动列表时,回收并列出项目状态。那我该怎么办呢?任何帮助将不胜感激。这是一个图像,以便更好地理解....

enter image description here

2 个答案:

答案 0 :(得分:3)

将列表项的背景设置为State List drawable。如果在每个项目上设置此项,状态列表将自动执行您想要的操作。

答案 1 :(得分:0)

使用HashMap存储用户选择的项目并根据用户选择设置背景

实施例

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.HashMap;

import android.app.ListActivity;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Bundle;
import android.telephony.PhoneNumberUtils;
import android.view.ContextMenu;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MyListView extends ListActivity {
    /** Called when the activity is first created. */
    Context context = null;
    HashMap<String, Boolean> userSelectionMap = new HashMap<String, Boolean>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ArrayAdapter arrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, PENS);
        setListAdapter(arrayAdapter);

        getListView().setTextFilterEnabled(true);
        ListView lv = getListView();
        this.registerForContextMenu(lv);




    }



    static final String[] PENS = new String[]{
        "MONT Blanc",
        "Gucci",
        "Parker",
        "Sailor",
        "Porsche Design",
        "item1",
        "item2",
        "item3",
        "item4",
        "item5",
        "item6",




    };

   @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    System.out.println("...selected...");
    if(isItemSelectedBefore(""+position)){
        v.setBackgroundResource(R.drawable.whbk);
    }else{
        v.setBackgroundResource(R.drawable.grbk);
    }
}

  boolean isItemSelectedBefore(String position){
      boolean userSelection = false;
      if(userSelectionMap.containsKey(position)){
          userSelection = !userSelection;
      }
      userSelectionMap.put(position, userSelection);
    return userSelectionMap.get(position);

   }

}