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