androidgridview設置選中
㈠ 如何讓android的GridView中顯示的元素只選擇一行中的某一個而改變資源文件。
GridView有一個setOnItemClickLintener()方法,可以獲取當前點擊的item,把這個item的位置傳給adapter,在adapter的getView()中,修改這個item的背景什麼的
㈡ 如何模擬android 中GridView的選中item的事件
java">gridView.setOnItemClickListener(newAdapterView.OnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){
//dosomething
}
});
㈢ Android 如何使GridView里的值處於選中狀態,因為每次點擊都是閃一下就過了,想選中那個值
你點擊了,就是響應了當前的item,那麼你所說的一閃而過只是說顯示效果上一閃而過,那麼你點擊之後,將該item的背景置換成一個有明顯標志的選中背景就行。。
㈣ 如何設置 android gridview 怎麼設置 , 一些item可以點擊,另外.....
這個要在代碼中進行設置,基本上有兩種方式:
在GridView所在的 activity(或者fragment)中, 找到該View,監聽點擊事件:
gridView.setOnItemClickListener(newAdapterView.OnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){
//點擊item觸發,進行判斷,如果需要處理點擊,就進行處理,否則,什麼也不做
if(/*處理點擊條件*/){
//要做的事
}
}
});在自己寫的GridView對應的適配器中(一般繼承於BaseAdapter)的getView中進行判斷,如果是需呀處理的item, 就調用setOnClickListener,並定義相應的點擊事件,否則可以不綁定點擊事件。
㈤ Android 如圖所示。gridview怎麼實現單選,且item選中時。item里的文字顏色改變
最好的方法是在代碼中去設置一個變數,在適配器中獲取這個變數,從而判斷是否選中
㈥ android怎麼讓listview的checkbox單選
還是先來看看是不是你想要的效果:
不廢話,直接上代碼,很簡單,代碼里都有注釋
單選
public class SingleActivity extends AppCompatActivity {
private ListView listView;
private ArrayList<String> groups;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single);
listView = (ListView) this.findViewById(R.id.lvGroup);
groups = new ArrayList<String>();
groups.add("11");
groups.add("22");
groups.add("33");
groups.add("44");
groups.add("55");
groups.add("66");
groups.add("77");
AdapterView.OnItemClickListener listItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 取得ViewHolder對象,這樣就省去了通過層層的findViewById去實例化我們需要的cb實例的步驟
SingleAdapter.ViewHolder viewHolder = (SingleAdapter.ViewHolder) view.getTag();
viewHolder.cb.toggle();// 把CheckBox的選中狀態改為當前狀態的反,gridview確保是單一選中
}
};
SingleAdapter adapter = new SingleAdapter(this, groups);
listView.setAdapter(adapter);
listView.setOnItemClickListener(listItemClickListener);
}
}
Adapter:
public class SingleAdapter extends BaseAdapter {
private Activity activity;//上下文
private ArrayList<String> list;
private LayoutInflater inflater = null;//導入布局
private int temp = -1;
public SingleAdapter(Activity context, ArrayList<String> list) {
this.activity = context;
this.list = list;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//listview每顯示一行數據,該函數就執行一次
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {//當第一次載入ListView控制項時 convertView為空
convertView = inflater.inflate(R.layout.group_item_view, null);//所以當ListView控制項沒有滑動時都會執行這條語句
holder = new ViewHolder();
holder.tv = (TextView) convertView.findViewById(R.id.item_tv);
holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);
convertView.setTag(holder);//為view設置標簽
} else {//取出holder
holder = (ViewHolder) convertView.getTag();
}
//設置list的textview顯示
holder.tv.setTextColor(Color.WHITE);
holder.tv.setText(list.get(position));
// 根據isSelected來設置checkbox的選中狀況
holder.cb.setId(position);//對checkbox的id進行重新設置為當前的position
holder.cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {//實現checkbox的單選功能,同樣適用於radiobutton
if (temp != -1) {
//找到上次點擊的checkbox,並把它設置為false,對重新選擇時可以將以前的關掉
CheckBox tempCheckBox = (CheckBox) activity.findViewById(temp);
if (tempCheckBox != null)
tempCheckBox.setChecked(false);
}
temp = compoundButton.getId();//保存當前選中的checkbox的id值
}
}
});
if (position == temp)//比對position和當前的temp是否一致
holder.cb.setChecked(true);
else
holder.cb.setChecked(false);
return convertView;
}
public static class ViewHolder {
TextView tv;
CheckBox cb;
}
}
多選:
public class MulActivity extends AppCompatActivity {
private ListView listView;
private ArrayList<String> groups;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mul);
listView = (ListView) this.findViewById(R.id.list);
groups = new ArrayList<>();
groups.add("11");
groups.add("22");
groups.add("33");
groups.add("44");
groups.add("55");
groups.add("66");
groups.add("77");
AdapterView.OnItemClickListener listItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// 取得ViewHolder對象,這樣就省去了通過層層的findViewById去實例化我們需要的cb實例的步驟
MulAdapter.ViewHolder viewHolder = (MulAdapter.ViewHolder) view.getTag();
viewHolder.cb.toggle();// 把CheckBox的選中狀態改為當前狀態的反,gridview確保是單一選中
MulAdapter.getIsSelected().put(position, viewHolder.cb.isChecked());//將CheckBox的選中狀況記錄下來
}
};
MulAdapter adapter = new MulAdapter(this, groups);
listView.setAdapter(adapter);
listView.setOnItemClickListener(listItemClickListener);
}
}
Adapter:
public class MulAdapter extends BaseAdapter {
private Context context;//上下文
private ArrayList<String> list;
//控制CheckBox選中情況
private static HashMap<Integer, Boolean> isSelected;
private LayoutInflater inflater = null;//導入布局
public MulAdapter(Context context, ArrayList<String> list) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
isSelected = new HashMap<Integer, Boolean>();
initData();
}
private void initData() {//初始化isSelected的數據
for (int i = 0; i < list.size(); i++) {
getIsSelected().put(i, false);
}
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//listview每顯示一行數據,該函數就執行一次
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {//當第一次載入ListView控制項時 convertView為空
convertView = inflater.inflate(R.layout.group_item_view, null);//所以當ListView控制項沒有滑動時都會執行這條語句
holder = new ViewHolder();
holder.tv = (TextView) convertView.findViewById(R.id.item_tv);
holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);
convertView.setTag(holder);//為view設置標簽
} else {//取出holder
holder = (ViewHolder) convertView.getTag();//the Object stored in this view as a tag
}
//設置list的textview顯示
holder.tv.setTextColor(Color.WHITE);
holder.tv.setText(list.get(position));
// 根據isSelected來設置checkbox的選中狀況
holder.cb.setChecked(getIsSelected().get(position));
return convertView;
}
public static class ViewHolder {
TextView tv;
CheckBox cb;
}
public static HashMap<Integer, Boolean> getIsSelected() {
return isSelected;
}
public static void setIsSelected(HashMap<Integer, Boolean> isSelected) {
MulAdapter.isSelected = isSelected;
}
}
以上所述是給介紹的Android中ListView + CheckBox實現單選、多選效果
㈦ gridview在android2.1中默認選中第一個,2.2中沒有
可以單獨寫一個item點擊事件OnItemClickListener oi = new OnItemClickListener() {
public void onItemClick(android.widget.AdapterView<?> arg0,
android.view.View arg1, int arg2, long arg3) {
};
};
文件設置tag判斷
㈧ android中,如何讓gridview選中的圖片的背景發生改變,並一直顯示
第一種是你你點擊整個imageview時,在她上面加一種效果(比如變亮了)你可以查查灰暗度怎麼實現。表示選中了。
第二種類似:整個布局用framelayout,裡面嵌套兩個imageView。把第二個imageview設置成gone不可見,當點擊第一個imageview時,顯示第二個imageview,並在第二個imageview做特效標示選中。
㈨ 如何設置GridView的選中行
document.getElementById(rowId).style.backgroundColor = '#ff0000';}然後在gridview的rowDataBound中, 添加處理按鍵的事件處理函數和使用滑鼠點擊某行時的選中事件. protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){if (e.Row.RowType == DataControlRowType.DataRow){ e.Row.Attributes.Add("onClick", "MarkRow(" + _i.ToString() + ");");_i++;}}當點某行時,直接選中,然後移動方向鍵則切換不同的選中行; 如果直接按方向鍵,則從第一行開始標識
㈩ android GridView.requestFocusFromTouch()後為什麼setSelection就不好使呢 總是選中第一條, 為什麼
setSelection是設置選擇項,而requestFocusFromTouch等於是模擬了一個touch事件,點擊了girdview,而默認點擊的地方就是第一條,點擊了第一條,焦點以及selection都到第一條了,所以setSelection就沒反應了。