listView.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
arg1.setBackgroundColor(Color.BLUE);
}
}
});listviewandroid
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
arg1.setBackgroundColor(Color.BLUE);
}
}
});listviewandroid
这个方法我试过啊 但是点击一个之后 背景颜色变了 但是滑动到下面 还是有其他条目的背景色也跟着变了 是不是要重写getView方法才行啊?
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;public class MyAdapter extends BaseAdapter {
public Context mContext;
public int mCount;
private List<String> items;
private LayoutInflater inflater;
private int myPosition = -1;
public MyAdapter(Context context,int count){
mContext = context;
mCount = count;
}
public MyAdapter(Context context,List<String> items){
this.items = items;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
//return mCount;
return items.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return items.get(position);
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public View getView(int position, View converView, ViewGroup parent) {
if(converView == null){
ViewHolder holder = new ViewHolder();
converView = inflater.inflate(R.layout.textviewlayout, null);
holder.mImageView = (ImageView) converView.findViewById(R.id.image);
holder.mImageView.setImageResource(R.drawable.ic_launcher);
holder.mTextVIew = (TextView) converView.findViewById(R.id.text);
holder.mTextVIew.setText(items.get(position));
converView.setTag(holder);
if(position == myPosition){
//do what you want to do
}
}else{
ViewHolder holder = (ViewHolder) converView.getTag();
holder.mTextVIew.setText(items.get(position));
if(position == myPosition){
//do what you want to do
}
}
return converView;
}
public class ViewHolder1{
public TextView mTextView;
}
public class ViewHolder2{
public ImageView mImageView;
}
public class ViewHolder{
public TextView mTextVIew;
public ImageView mImageView;
}
public void addItem(String item){
items.add(item);
}
public void setPosition(int position){
myPosition = position;//set position tag
}
}
如果你需要其他功能 需要自己再实现
拉出去的那个item,并把这个item的格式用到的新出现的item,你自己
在getview里根据position设置背景即可。
// TODO Auto-generated method stub
if(convertView == null){
ViewHolder holder = new ViewHolder();
convertView = inflater.inflate(R.layout.show_notethemetext, null);
holder.timeTextView = (TextView) convertView.findViewById(R.id.timelist);
holder.timeTextView.setText(list.get(position).get("timeData"));
holder.contentTextView = (TextView) convertView.findViewById(R.id.themelist);
holder.contentTextView.setText(list.get(position).get("themeData"));
convertView.setTag(holder);
for(int i = 0;i < bgClickList.size();i++){
if(position == bgClickList.get(i).get("bg")){
convertView.setBackgroundColor(Color.BLUE);
}
}
}else{
ViewHolder holder = (ViewHolder) convertView.getTag();
holder.timeTextView.setText(list.get(position).get("timeData"));
holder.contentTextView.setText(list.get(position).get("themeData"));
for(int i = 0;i < bgClickList.size();i++){
if(position == bgClickList.get(i).get("bg")){
convertView.setBackgroundColor(Color.BLUE);
}
}
}
return convertView;
}
是这样子的吗? 这样还是不行啊,还是会有多个View的背景发生变化
android:listSelector="@android:color/transparent"来取消黄色高亮效果.
// TODO Auto-generated method stub
if(convertView == null){
ViewHolder holder = new ViewHolder();
convertView = inflater.inflate(R.layout.show_notethemetext, null);
holder.timeTextView = (TextView) convertView.findViewById(R.id.timelist);
holder.timeTextView.setText(list.get(position).get("timeData"));
holder.contentTextView = (TextView) convertView.findViewById(R.id.themelist);
holder.contentTextView.setText(list.get(position).get("themeData"));
convertView.setTag(holder);
for(int i = 0;i < bgClickList.size();i++){
if(position == bgClickList.get(i).get("bg")){
Log.i("position", ""+position);
convertView.setBackgroundColor(Color.BLUE);
}
}
}else{
ViewHolder holder = (ViewHolder) convertView.getTag();
holder.timeTextView.setText(list.get(position).get("timeData"));
holder.contentTextView.setText(list.get(position).get("themeData"));
for(int i = 0;i < bgClickList.size();i++){
if(position == bgClickList.get(i).get("bg")){
Log.i("position", ""+position);
convertView.setBackgroundDrawable(getResources().getDrawable(R.drawable.blueer));
}
}
}
return convertView;
}
点击了坐标为2的Item 上下滑动屏幕
07-25 23:55:06.332: I/position(4627): 2
07-25 23:55:13.028: I/position(4627): 2
07-25 23:55:21.942: I/position(4627): 2这个Position值应该是没问题的,会不会是convertView的问题
// TODO Auto-generated method stub
if(convertView == null){
ViewHolder holder = new ViewHolder();
convertView = inflater.inflate(R.layout.show_notethemetext, null);
holder.timeTextView = (TextView) convertView.findViewById(R.id.timelist);
holder.timeTextView.setText(list.get(position).get("timeData"));
holder.contentTextView = (TextView) convertView.findViewById(R.id.themelist);
holder.contentTextView.setText(list.get(position).get("themeData"));
convertView.setTag(holder);
for(int i = 0;i < bgClickList.size();i++){
if(position == bgClickList.get(i).get("bg")){
Log.i("position", ""+position);
convertView.setBackgroundDrawable(getResources().getDrawable(R.drawable.blueer));
}else{
boolean isPos = true;
for(int l = 0;l < bgClickList.size();l++){
if(bgClickList.get(l).get("bg") == position){
convertView.setBackgroundDrawable(getResources().getDrawable(R.drawable.blueer));
isPos = false;
}
}
if(isPos){
convertView.setBackgroundColor(Color.TRANSPARENT);
}
}
}
}else{
ViewHolder holder = (ViewHolder) convertView.getTag();
holder.timeTextView.setText(list.get(position).get("timeData"));
holder.contentTextView.setText(list.get(position).get("themeData"));
for(int i = 0;i < bgClickList.size();i++){
if(position == bgClickList.get(i).get("bg")){
Log.i("position", ""+position);
convertView.setBackgroundDrawable(getResources().getDrawable(R.drawable.blueer));
}else{
boolean isPos = true;
for(int l = 0;l < bgClickList.size();l++){
if(bgClickList.get(l).get("bg") == position){
convertView.setBackgroundDrawable(getResources().getDrawable(R.drawable.blueer));
isPos = false;
}
}
if(isPos){
convertView.setBackgroundColor(Color.TRANSPARENT);
}
}
}
}
return convertView;
}
}