ListView怎么变成选中状态? Android里面ListView我现在不选中,怎么在程序里面让某一行变成选中状态,或者高亮也行!listviewAndroid 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 mListView.setSelection(position)这个是不是不行? 不是这个,这个是定位到第XX行吧, 我想让第XX行高亮! package com.example.zdemo1;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;public class ListBackground extends Activity { private List<String> dataList = new ArrayList<String>(); private ListView lv; private int clickPosition = -1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_background); for (char tempChar = 'a' ; tempChar <= 'z'; tempChar++){ dataList.add(String.valueOf(tempChar)); } lv = (ListView)findViewById(R.id.listView1); final MyAdapter ma = new MyAdapter(); lv.setAdapter(ma); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(position != clickPosition){ clickPosition = position; } else{ clickPosition = -1; } ma.notifyDataSetChanged(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_list_background, menu); return true; } private class MyAdapter extends BaseAdapter{ @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int position) { return dataList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tv = new TextView(ListBackground.this); tv.setText(dataList.get(position)); tv.setBackgroundColor(Color.WHITE); if(position == clickPosition){ tv.setBackgroundColor(Color.BLACK); } return tv; /* final int p = position; RadioButton rb = new RadioButton(ListBackground.this); rb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ clickPosition=p; } else{ clickPosition = -1; } notifyDataSetChanged(); } }); if(clickPosition == position){ rb.setChecked(true); } else{ rb.setChecked(false); } return rb;*/ } }}原来帮人写的。跟你的需求应该一样吧。 新手,看了半天没看懂什么意思!!!不过我感觉应该和我表述的意思有些不同; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_background); for (char tempChar = 'a' ; tempChar <= 'z'; tempChar++){ dataList.add(String.valueOf(tempChar)); } lv = (ListView)findViewById(R.id.listView1); final MyAdapter ma = new MyAdapter(); lv.setAdapter(ma); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(position != clickPosition){ clickPosition = position; } else{ clickPosition = -1; } ma.notifyDataSetChanged(); } }); //我想在这里添加一句什么话, 让指定的某一行变成选中状态,或者高亮也行! } if(position == clickPosition){ tv.setBackgroundColor(Color.BLACK); }这一句,是设置被点击的按钮背景色改变的,当然你可以把tv.setBackgroundColor(Color.BLACK);改成选中状态或者高亮。具体思路就是我是通过的item的点击事件来控制clickPosition,然后进行刷新。你的需求是不选中也有某一行会变成高亮。不过这也需要一个事件来触发。只需要把控制clickPosition的这段代码放到你的事件中就可以了。 if(position != clickPosition){ clickPosition = position; } else{ clickPosition = -1; } ma.notifyDataSetChanged(); 我在程序里面用的是SimpleAdapter, getView这段代码应该怎么加?SimpleAdapter是不是不可以这么做/? 直接配置listview的listselector属性 就可以啦 我在程序里面用的是SimpleAdapter, getView这段代码应该怎么加?SimpleAdapter是不是不可以这么做/?SimpleAdapter貌似不可以。他给你写好了getview。推荐你自己写adapter继承BaseAdapter 我在程序里面用的是SimpleAdapter, getView这段代码应该怎么加?SimpleAdapter是不是不可以这么做/?SimpleAdapter貌似不可以。他给你写好了getview。推荐你自己写adapter继承BaseAdapter好吧, 谢谢了! 感谢最近帮我解答很多问题! 请教。写一个地图,从一个界面传回坐标并定位 如何学习OpenGL es技术 高手进 No space left on device 问题 listview布局问题 Android Service的问题 这是什么错误 android开发版本选项选择问题 Android+PHP+Mysql实现服务器简单登录功能 android悬浮窗 andorid模拟器按键不能用了? EditText点击时,希望弹出数字软键盘
package com.example.zdemo1;import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;public class ListBackground extends Activity { private List<String> dataList = new ArrayList<String>();
private ListView lv;
private int clickPosition = -1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_background);
for (char tempChar = 'a' ; tempChar <= 'z'; tempChar++){
dataList.add(String.valueOf(tempChar));
}
lv = (ListView)findViewById(R.id.listView1);
final MyAdapter ma = new MyAdapter();
lv.setAdapter(ma);
lv.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if(position != clickPosition){
clickPosition = position;
}
else{
clickPosition = -1;
}
ma.notifyDataSetChanged();
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_list_background, menu);
return true;
}
private class MyAdapter extends BaseAdapter{ @Override
public int getCount() {
return dataList.size();
} @Override
public Object getItem(int position) {
return dataList.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(ListBackground.this);
tv.setText(dataList.get(position));
tv.setBackgroundColor(Color.WHITE);
if(position == clickPosition){
tv.setBackgroundColor(Color.BLACK);
}
return tv; /* final int p = position;
RadioButton rb = new RadioButton(ListBackground.this);
rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
clickPosition=p;
}
else{
clickPosition = -1;
}
notifyDataSetChanged();
}
});
if(clickPosition == position){
rb.setChecked(true);
}
else{
rb.setChecked(false);
}
return rb;*/
}
}
}原来帮人写的。跟你的需求应该一样吧。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_background);
for (char tempChar = 'a' ; tempChar <= 'z'; tempChar++){
dataList.add(String.valueOf(tempChar));
}
lv = (ListView)findViewById(R.id.listView1);
final MyAdapter ma = new MyAdapter();
lv.setAdapter(ma);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if(position != clickPosition){
clickPosition = position;
}
else{
clickPosition = -1;
}
ma.notifyDataSetChanged();
}
});
//我想在这里添加一句什么话, 让指定的某一行变成选中状态,或者高亮也行!
}
tv.setBackgroundColor(Color.BLACK);
}这一句,是设置被点击的按钮背景色改变的,当然你可以把tv.setBackgroundColor(Color.BLACK);改成选中状态或者高亮。
具体思路就是我是通过的item的点击事件来控制clickPosition,然后进行刷新。
你的需求是不选中也有某一行会变成高亮。不过这也需要一个事件来触发。只需要把控制clickPosition的这段代码放到你的事件中就可以了。
if(position != clickPosition){
clickPosition = position;
}
else{
clickPosition = -1;
}
ma.notifyDataSetChanged();
SimpleAdapter貌似不可以。他给你写好了getview。推荐你自己写adapter继承BaseAdapter
SimpleAdapter貌似不可以。他给你写好了getview。推荐你自己写adapter继承BaseAdapter
好吧, 谢谢了! 感谢最近帮我解答很多问题!