`
bashenmail
  • 浏览: 228785 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Adapter增加选中状态

阅读更多
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.tcad.util.WebTools;

public class MyArrayAdapter extends BaseAdapter{

	private static List<Map<String,String>> list;
	
	private LayoutInflater mInflater;
	
	private ViewHolder holder;
	//alertdialog 被选中初始化false
	private static boolean[] isFocused ;
	
	private static int whichClick = -1;
	
	public MyArrayAdapter(Context context,List<Map<String,String>> objects){
		
		list = objects;
		
		mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		
		isFocused = new boolean[objects.size()];
		
		for(int i=0;i<objects.size();i++){
			
			isFocused[i] = false;
		}
	}
	
	public int getCount() {
		
		return list.size();
	}

	public Object getItem(int position) {
		
		return list.get(position);
	}

	public long getItemId(int position) {
		
		return position;
	}

	public void changeBg(int position){
		
		isFocused[whichClick==-1?0:whichClick] = false;
		
		whichClick = position;
		
		isFocused[position] = true;
		
		notifyDataSetChanged();
	}
	
	public View getView(int position, View convertView, ViewGroup parent) {
		
		if (convertView == null) {
			
            convertView = mInflater.inflate(R.layout.musiccategories, null);

            holder = new ViewHolder();
            
            holder.s_Name = (TextView) convertView.findViewById(R.id.s_name);
            
            convertView.setTag(holder);
        } else {
            // Get the ViewHolder back to get fast access to the TextView
            // and the ImageView.
            holder = (ViewHolder) convertView.getTag();
        }
		
		convertView.setBackgroundResource(isFocused[position]?android.R.drawable.alert_dark_frame:android.R.drawable.alert_light_frame);
		
		holder.s_Name.setText(list.get(position).get(WebTools.SON_GEMING));
		
		return convertView;
	}

	static class ViewHolder {
		
        TextView s_Name;
        
    }
}

 

掉 MyArrayAdapter 的changeBg(int)就可以改变该项的背景

分享到:
评论

相关推荐

    Listview选中效果

    你可以通过设置`android:listSelector`属性来定制选中状态下的背景颜色或图片。例如,在XML布局文件中,可以在ListView标签内添加以下代码: ```xml android:id="@+id/my_listview" android:layout_width=...

    Android列表之圆角ListView选中(二)

    本教程将详细介绍如何在Android中实现圆角ListView并处理选中状态,基于提供的"Android列表之圆角ListView选中(二)"项目。 首先,我们需要理解ListView的基本用法。ListView通过Adapter来绑定数据,并通过...

    一个用RecyclerView实现的画廊效果,被选中item居中放大,效果很自然。

    在适配器中,我们需要维护一个当前选中位置的变量,并在数据改变或选中状态变化时通知RecyclerView。通过调用`notifyDataSetChanged()`或更精确的`notifyItemChanged()`方法,我们可以触发RecyclerView重新布局和...

    ListView的固定选中效果

    此外,为了实现固定的选中效果,我们需要禁用ListView的默认选择模式,即`CHOICE_MODE_NONE`,防止ListView自动处理选中状态。 ```xml android:id="@+id/list_view" android:layout_width="match_parent" ...

    Android ListView 选中效果 自定义

    当用户触摸一个项时,ListView需要改变选中状态,通常显示不同的背景色或图像。 自定义选中效果的关键在于为ListView的每一项设置不同的状态选择器(Selector)。状态选择器是基于Drawable的,它可以定义不同状态下...

    CheckableTextView,简单灵活的选中文本视图或选中文本视图.zip

    然后,在布局XML文件中声明CheckableTextView,设置相应的属性,如初始选中状态、颜色等。在代码中,可以通过 findViewById() 获取实例,调用相关方法来操作选中状态。 4. **应用场景** - 列表选择:在ListView或...

    Android测试统计listview选中个数

    5. **数据绑定**:如果你的数据源是一个列表(如ArrayList),在适配器中,你可以跟踪每个条目的选中状态。这样,即使ListView重新加载或滚动,也能保持正确的选中状态。 6. **TestShowList**:这个文件名可能是指...

    在GridView中实现单选或多选功能

    - 选中状态同步:在GridView之外的地方(如Action Bar上的菜单项)也要反映当前的选中状态,需要在Adapter和外部进行双向通信。 6. 其他注意事项: - 数据刷新:当数据源发生变化时,记得调用Adapter的...

    CheckableTextView.zip

    在Adapter的`getView()`方法中,可以根据数据源来设置每个`CheckableTextView`的选中状态。 此外,如果需要在多个`Checkable`视图间实现多选或单选功能,可以使用`CheckableGroup`类,如`RadioGroup`或自定义的`...

    RecycleView列表单选实现

    首先,我们需要为`RecycleView`的每个条目定义一个数据模型类,增加一个表示选中状态的布尔属性,例如`isSelected`: ```java public class ItemModel { private String title; private boolean isSelected; //...

    android中listview多选demo

    9. **数据操作**:在用户完成选择后,可以通过遍历Adapter的数据集和选中状态列表,找出所有被选中的条目,执行相应的业务逻辑,如批量删除。 10. **广播接收者或通知**:如果需要在其他组件或者Activity之间共享...

    listview的item子控件删除和跳转传值,点击选中

    在getView()方法中,根据currentSelectedPosition判断当前item是否被选中,然后通过修改背景颜色、文字样式等方式显示选中状态。 在"listviewTest"这个项目中,你可能包含了测试这些功能的代码。通常,这个项目会...

    带全选的ExpandableListView

    为了实现这一功能,开发者可能使用了`Adapter`(适配器)来绑定数据到`ExpandableListView`,并且在适配器中维护每个子项的选中状态。适配器中的`setChecked()`方法可以用来改变子项的选中状态。 在项目中,`...

    Android 扩展 带CheckBox的expandableListview

    此外,为了提供良好的用户体验,开发者可能还对UI进行了优化,例如添加选中状态的视觉反馈,或者在全选/全取消时自动切换所有子项的CheckBox状态。这可能涉及自定义ViewGroup、动画效果等。 总之,"Android 扩展 带...

    RecycleViewItemChooseAndCenter.zip

    - 可以添加动画效果,比如在切换选中状态时添加淡入淡出或缩放效果,以增加视觉吸引力。 - 确保在滚动过程中,选中状态的改变不会导致用户混淆。例如,当Item离开屏幕时取消高亮,只有在新的Item完全可见时才设置...

    MultiChoiceAdapter-master.rar

    1. 创建自定义Adapter:首先,你需要创建一个继承自MultiChoiceAdapter的自定义Adapter,重写其中的getView方法,为每个列表项设置复选框或其他选中状态的视觉元素。 2. 设置Adapter:将自定义的Adapter设置到...

    listViewChecked多选且按顺序选择

    在getView()方法中,根据当前item的位置和之前item的选择状态来决定当前item的选中状态。 3. **复选框CheckBox**: 在ListView的每个Item中,需要包含一个CheckBox,作为用户选择的触发器。通过设置CheckBox的...

    Android ListView 带 CheckBox(全选,反选,全不选)

    - 为了实时显示已选择的数量,可以在数据源中增加一个计数器,每当CheckBox状态改变时,根据新的选中状态更新计数器。同时,在UI上设置一个TextView来显示这个计数。 7. **优化性能** - ListView的复用机制可能...

    android 自定义ListView实现单选

    当用户需要在列表中选择一个项目,并保持其他项未选中状态时,就需要自定义ListView来实现这一特性。这通常涉及到对Adapter的扩展和对View的定制。 二、自定义Adapter 首先,我们需要创建一个新的Adapter类,继承自...

    android MultiChoiceAdapter源码.rar

    - **状态维护**:MultiChoiceAdapter通过维护一个选中状态的集合(通常是一个SparseBooleanArray)来跟踪用户的选择。当用户点击条目时,会更新这个集合,并同步更新条目的视觉选中状态。 - **选择模式**:...

Global site tag (gtag.js) - Google Analytics