`
月下独酌
  • 浏览: 130252 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Adapter的用法

 
阅读更多
Adapter的用法:
public class ListAdapter extends BaseAdapter {
	private Context mContext;
    
    private ArrayList<String> mTitles = new ArrayList<String>();

	private ArrayList<String> mDialogue = new ArrayList<String>();
    
    private ArrayList<Boolean> mExpanded = new ArrayList<Boolean>();
    
    private int mCount = 0;
	
    public ListAdapter (Context context, 
    		ArrayList<String> titles,
    		ArrayList<String> dialogue,
    		ArrayList<Boolean> expanded,
    		int count)
    {
    	mTitles = titles;
        mContext = context;
        mDialogue = dialogue;
        mExpanded = expanded;
        mCount = count;
    }
    
    public int getCount() {
        return mCount;
    }

    
    public void setCount(int mCount) {
		this.mCount = mCount;
	}

    public Object getItem(int position) {
        return position;
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        VerView sv;//子项视图
        if (convertView == null) {
            sv = new VerView(mContext, (String)mTitles.get(position), mDialogue.get(position), mExpanded.get(position));
        } else {
            sv = (VerView)convertView;
            sv.setTitle(mTitles.get(position));
            sv.setDialogue(mDialogue.get(position));
            sv.setExpanded(mExpanded.get(position));
        }
        
        return sv;
    }

    public void toggle(int position) {
    	mExpanded.set(position, !mExpanded.get(position));
    	for(int i = 0; i < mExpanded.size(); i++){
    		 if (i != position){
    			 mExpanded.set(i, false);
    		 }
    	}
    	
        notifyDataSetChanged();
    }

    public ArrayList<String> getTitles() {
		return mTitles;
	}

	public void setTitles(ArrayList<String> mTitles) {
		this.mTitles = mTitles;
	}

	public ArrayList<String> getDialogue() {
		return mDialogue;
	}

	public void setDialogue(ArrayList<String> mDialogue) {
		this.mDialogue = mDialogue;
		notifyDataSetChanged();
	}

	public ArrayList<Boolean> getExpanded() {
		return mExpanded;
	}

	public void setExpanded(ArrayList<Boolean> mExpanded) {
		this.mExpanded = mExpanded;
	}
}


public class VerView extends LinearLayout {
	private TextView mTitle;
    private TextView mDialogue;
    private ImageView mImageView;
    
    public VerView(Context context, String title, String dialogue, boolean expanded) {
        super(context);
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        LinearLayout layout = (LinearLayout) inflater.inflate(
				R.layout.list_item_view, null).findViewById(R.id.verListView);
		addView(layout);
		
		RelativeLayout rl = (RelativeLayout) layout.getChildAt(0);
		mTitle = (TextView)rl.getChildAt(0);
		mTitle.setText(title);
		mImageView = (ImageView)rl.getChildAt(1);
		mImageView.setImageResource(R.drawable.more_normal);
		
		mDialogue = (TextView) layout.getChildAt(1);
		mDialogue.setText(dialogue);

        mDialogue.setVisibility(expanded ? VISIBLE : GONE);
    }
    
    /**
     * Convenience method to set the title of a SpeechView
     */
    public void setTitle(String title) {
        mTitle.setText(title);
    }
    
    /**
     * Convenience method to set the dialogue of a SpeechView
     */
    public void setDialogue(String words) {
        mDialogue.setText(words);
    }
    
    /**
     * Convenience method to expand or hide the dialogue
     */
    public void setExpanded(boolean expanded) {
        mDialogue.setVisibility(expanded ? VISIBLE : GONE);
        if (expanded){
        	mImageView.setImageResource(R.drawable.more_normal_right);
        	this.setBackgroundColor(Color.WHITE);
        }
        else{
        	mImageView.setImageResource(R.drawable.more_normal);
        	this.setBackgroundColor(Color.TRANSPARENT);
        }
    }
    
}


分享到:
评论

相关推荐

    Android listview与adapter用法

    本篇文章将详细探讨Android中的Adapter用法及其在ListView中的应用。 1. **Adapter的概念** - `Adapter`是Android中一个核心的概念,它扮演着数据源与UI组件之间的桥梁角色。具体来说,Adapter负责将后端的数据...

    Android之Adapter用法总结

    ### Android之Adapter用法总结 #### 一、概念与作用 **Adapter** 是 Android 开发中连接后端数据和前端视图的一个关键组件。它作为数据和用户界面(UI)之间的桥梁,在Android开发中扮演着极其重要的角色。尤其是...

    Android开发笔记之Adapter用法

    本篇将通过三个示例,即ArrayAdapter、SimpleAdapter和BaseAdapter,深入探讨它们的用法。 首先,我们来看**ArrayAdapter**。ArrayAdapter是最简单的Adapter实现,它主要用于将数组中的数据绑定到ListView等视图上...

    浅析Android之Adapter用法总结

    这篇文章将深入探讨Adapter的用法,包括其概念、常见类型以及应用案例。 首先,Adapter的概念是连接数据源和UI组件的适配器接口。它负责将后台数据适配到前端的视图中,使得不同的数据类型能够适应多种视图的显示...

    这种Adapter的用法

    这个主题“这种Adapter的用法”显然聚焦于如何在实际编程中运用Adapter模式,特别是针对Android开发中的Adapter类。适配器用法是Android应用开发中的关键部分,因为它们在UI组件(如ListView、RecyclerView)与数据...

    webrtc /adapter-latest.js

    webrtc /adapter-latest.js

    Android Adapter的使用

    RecyclerView.Adapter同样需要重写`onCreateViewHolder()`, `onBindViewHolder()`等方法。 **ViewPager**是另一个关键组件,常与适配器一起使用,实现页面滑动的效果。ViewPager通常配合PagerAdapter使用,...

    适配器Adapter使用示例

    总结一下,这个示例主要展示了如何自定义一个Adapter,包括创建一个适配器类,重写关键方法以显示数据,以及使用ViewHolder优化性能。同时,还介绍了如何使用Handler进行Adapter与Activity之间的通信,以便在数据...

    esper_adapter_reference

    本文将深入探讨Esper 4.3.0中各种Adapter的特性与使用方法。 #### 1. Adapter Overview Adapter是Esper中用于与外部系统交互的核心组件。它们分为输入Adapter和输出Adapter两大类: - **输入Adapter**:负责从...

    AutoCompleteTextView和adapter的使用

    本教程将深入探讨`AutoCompleteTextView`与`Adapter`的结合使用,包括`ArrayAdapter`和`SimpleAdapter`。 **一、AutoCompleteTextView简介** `AutoCompleteTextView`是`EditText`的一个子类,它提供了自动补全功能...

    Android自定义adapter的listview

    为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求定制ListView的每一项视图,以适应不同的数据结构和界面设计。 首先,我们需要...

    android之各种Adapter加载数据

    Adapter的用法类似,但需要配合ViewHolder模式以优化性能。 加载数据的过程通常包括以下几个步骤: 1. **创建Adapter实例**:根据实际需求选择合适的Adapter类型,实例化并传入数据源。 2. **设置Adapter**:将...

    使用三种Adapter构建ListView

    使用ArrayAdapter,你需要继承它并重写`getView()`方法,或者直接使用默认的模板来显示数据。以下是一个基本的ArrayAdapter示例: ```java String[] items = {"Item 1", "Item 2", "Item 3"}; ArrayAdapter&lt;String&gt;...

    android中adapter的使用

    下面将详细介绍这三种Adapter的使用及其相关知识点。 1. ArrayAdapter ArrayAdapter是最基础的Adapter,它主要用于将一个数组或列表的数据绑定到ListView等视图。ArrayAdapter有多个构造函数,可以接受不同类型的...

    Android中ListView+Adapter

    4. **设置Adapter**: 在Activity中,找到ListView实例,然后调用`setAdapter()`方法,传入创建好的Adapter。 5. **监听事件**: 如果需要,可以设置点击事件监听器,例如,使用`.setOnItemClickListener()`方法为...

    AdapterSample

    标题"AdapterSample"表明这是一个关于Adapter用法的示例,特别是对BaseAdapter进行了某种封装,以提供更简便或更灵活的使用方式。 BaseAdapter是Android SDK提供的一个基础适配器类,它实现了ListAdapter接口,适用...

    Android自定义Adapter适配器

    5. 设置Adapter:最后,将自定义的Adapter传递给ListView,通过setAdapter()方法,使ListView开始使用我们自定义的适配器来展示数据。 在这个项目中,"自定义Adapter"文件很可能是实现了上述步骤的代码示例。通过...

Global site tag (gtag.js) - Google Analytics