package newdemo.jeno.listviewdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map; public class TestAndroidActivity extends Activity { EditText msgContent;
ListView listView;
BaseAdapter adapter;
ArrayList<Map<String, String>> data = new ArrayList<Map<String, String>>(); /**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initViews();
} private void initViews() {
msgContent = (EditText) findViewById(R.id.content);
Button btnSend = (Button) findViewById(R.id.send);
btnSend.setOnClickListener(onClickListener);
Button btnReceive = (Button) findViewById(R.id.receive);
btnReceive.setOnClickListener(onClickListener);
Button btnPic = (Button) findViewById(R.id.pic);
btnPic.setOnClickListener(onClickListener);
listView = (ListView) findViewById(R.id.list);
adapter = new TestAdapter();
listView.setAdapter(adapter);
} private View.OnClickListener onClickListener = new View.OnClickListener() { public void onClick(View v) {
Map<String, String> item;
item = new HashMap<String, String>();
switch (v.getId()) {
case R.id.pic:
item.put("type", TYPE_PIC + "");
item.put("content", "图片");
break;
case R.id.send:
item.put("type", TYPE_SEND + "");
item.put("content", "发送消息" + msgContent.getText().toString().trim());
break;
case R.id.receive: item.put("type", TYPE_RECEIVE + "");
item.put("content", "收到消息" + msgContent.getText().toString().trim());
break;
}
data.add(item);
adapter.notifyDataSetChanged();
msgContent.setText("");
}
}; class TestAdapter extends BaseAdapter { public int getCount() {
return data.size();
} public Object getItem(int position) {
if (position < getCount()) {
return data.get(position);
}
return null;
} public long getItemId(int position) { return 0;
} public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("getView::" + position);
int type = TYPE_SEND;
try {
type = Integer.parseInt(data.get(position).get("type"));
} catch (Exception e) {
e.printStackTrace();
}
ViewHolder holder = null;
if (convertView == null) {
System.out.println("getView::convertView is null");
holder = new ViewHolder();
switch (type) {
case TYPE_SEND:
convertView = View.inflate(getBaseContext(),
R.layout.listitem_send, null);
holder.text = (TextView) convertView
.findViewById(R.id.message);
break;
case TYPE_RECEIVE:
convertView = View.inflate(getBaseContext(),
R.layout.listitem_receive, null);
holder.text = (TextView) convertView
.findViewById(R.id.message);
break;
case TYPE_PIC:
convertView = new ImageView(getBaseContext());
((ImageView) convertView).setImageResource(R.drawable.icon);
break;
}
convertView.setTag(holder);
} else {
System.out.println("getView::convertView not null");
holder = (ViewHolder) convertView.getTag();
} if (type != TYPE_PIC) {
String msg = data.get(position).get("content");
holder.text.setText(msg);
}
return convertView;
} public int getItemViewType(int position) {
int type = super.getItemViewType(position);
try {
type = Integer.parseInt(data.get(position).get("type"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("getItemViewType::" + position + " is " + type);
return type;
} public int getViewTypeCount() {
System.out.println("getViewTypeCount is " + 3);
return 3;
} class ViewHolder {
TextView text;
}
} /**
* 发送的消息
*/
private static final int TYPE_SEND = 0;
/**
* 收到的消息
*/
private static final int TYPE_RECEIVE = TYPE_SEND + 1;
/**
* 图片
*/
private static final int TYPE_PIC = TYPE_RECEIVE + 1; } 一个项目说明问题
注意的是:
public int getItemViewType(int position) {
int type = super.getItemViewType(position);
try {
type = Integer.parseInt(data.get(position).get("type"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("getItemViewType::" + position + " is " + type);
return type; //次地方返回的类型一定要比下面的
getViewTypeCount的数值小   比如 下面的count返回的是3   怎这个地方最大是2   就是返回的是数组的角标
}

public int getViewTypeCount() {
System.out.println("getViewTypeCount is " + 3);
return 3;
}

android listview getviewtypecount和getItemViewType的更多相关文章

  1. Android ListView Adapter的getItemViewType和getViewTypeCount多种布局

     <Android ListView Adapter的getItemViewType和getViewTypeCount多种布局> 在Android的ListView中.假设在一个Lis ...

  2. Android ListView getViewTypeCount 的返回值问题解决

    最近在学慕课网上的一个实战课程,期间有一个智能聊天机器人模块. 聊天界面通过 ListView 显示,用 Adapter 加载.一般来说,单对单的聊天,两者发出的话分别列在聊天页面的左右两边.所以,在 ...

  3. Android Adapter的getViewTypeCount和getItemViewType

    Adapter的getViewTypeCount和getItemViewType 不同的项目布局(item layout) 我们再举一个稍微复杂的例子,在上例的list中加入一些分隔线 你需要做这些: ...

  4. android listview Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

    android listview 适配器在多种类型viewType报错: Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; ...

  5. android listview需要呈现多个布局

    android listview需要呈现多个布局 之前的做法很笨 在getView()方法里面,不仅将viewHolder作为tag属性设置给convertView 还将当前的position作为ta ...

  6. Android ListView工作原理完全解析,带你从源码的角度彻底理解

    版权声明:本文出自郭霖的博客,转载必须注明出处.   目录(?)[+] Adapter的作用 RecycleBin机制 第一次Layout 第二次Layout 滑动加载更多数据   转载请注明出处:h ...

  7. Android ListView工作原理全然解析,带你从源代码的角度彻底理解

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/44996879 在Android全部经常使用的原生控件其中.使用方法最复杂的应该就是 ...

  8. android ListView 九大重要属性详细分析、

    android ListView 九大重要属性详细分析. 1.android ListView 一些重要属性详解,兄弟朋友可以参考一下. 首先是stackFromBottom属性,这只该属性之后你做好 ...

  9. Android ListView onItemClick Not Work

    Android ListView onItemClick Not Work ListView item中有Button和RadioButton的时候,它的Item点击事件不起作用,需要设置item的属 ...

随机推荐

  1. 上传本地文件到HDFS

    源代码: import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hado ...

  2. IE6 + png24 透明图片(滤镜)

    IE6 + png24 透明图片(滤镜) .IE6png{_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true ...

  3. 【c++】读写txt

    #include<iostrea> #include<fstream> int main() { ofstream fout;// 创建一个ofstream对象 fout.op ...

  4. redis+tomcat+nginx session共享

    http://www.cnblogs.com/zhrxidian/p/5432886.html系列课程 简洁明了 http://blog.csdn.net/grhlove123/article/det ...

  5. 手把手ssm+idea

    https://github.com/judasn/Basic-Multi-Module-SSM https://github.com/liyifeng1994/ssm

  6. Sql Server中通配符的使用

    Sql Server中通配符的使用 通配符_ "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只 ...

  7. EPPLUS之外的选择,EXCEL的操作(NPOI,POI(java))

    NPOI 编辑 NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 中文名 NPOI 优    势 传统操作Excel遇到的 ...

  8. 【CITE】C#目录、文件、文件夹操作

    1.   在一个目录下创建一个文件夹 if (!System.IO.Directory.Exists(path)) System.IO.Directory.CreateDirectory(path); ...

  9. C# Form内存回收

    namespace WebBrowserMemoryTest { public partial class Form1 : Form { private int _Pages; public Form ...

  10. Qt之QSS(白色靓丽)

    简述 Qt助手中有关于各种部件的QSS详细讲解,资源很丰富,请参考:Qt Style Sheets Examples. 白色靓丽 - 一款漂亮的QSS风格. 你可以直接使用,也可以随意转载,但请务必保 ...