就在今天上午,我在做一个关于接受服务器json数据并且将其解析到本地,然后显示在屏幕上,结果因为生疏,以前老是觉得ArrayAdapter太low了,所以看一下便不再去写代码了,然而就在今天我要用它作为Listview的适配器时,我却遇到了出多麻烦,在这里分享给大家,惨痛的教训啊.
首先我先向大家介绍一下关于ArrayAdapter的绑定数据的几种方式;
1.通过数组(不推荐使用,因为不可以动态更新数据)
2.通过动态的java泛型集合(推荐使用,开发时用的比较多)
3.ArrayAdapter自身进行数据绑定
我们来介绍后两种;
1.ArrayAdapter自身进行数据绑定
adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_expandable_list_item_1);
adapter.add("cqq");
adapter.add("cqq1");
adapter.add("cqq2");
adapter.add("cqq3");
listView.setAdapter(adapter);
2.通过动态的java泛型集合
public ArrayList<String> initdata() {
// TODO Auto-generated method stub
list = new ArrayList<String>();
list.add("CQQ1");
list.add("CQQ2");
list.add("CQQ3");
return list;
}
listView.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1,initdata()));
下面我们附上源码;
package com.example.text1;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
private ListView listView;
private ArrayList<String> list;
private ArrayAdapter< String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
//listView.setAdapter(new ArrayAdapter<String>(MainActivity.this,
//android.R.layout.simple_list_item_1,initdata()));
adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_expandable_list_item_1);
adapter.add("cqq");
adapter.add("cqq1");
adapter.add("cqq2");
adapter.add("cqq3");
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
//在这里的position和id都是从0开始的
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,position+" "+id,Toast.LENGTH_LONG).show();
}
});
}
public ArrayList<String> initdata() {
// TODO Auto-generated method stub
list = new ArrayList<String>();
list.add("CQQ1");
list.add("CQQ2");
list.add("CQQ3");
return list;
}
}
最后我给大家分型一下我今天的教训:
1.不要跟模拟器过不去,如果不行,果断重启或者重新配置
2.以前的知识点,要进场拿来运用
3.自己不要再一个很小的方面死扣,小心阴沟里翻船
4.多动手,希望和大家一起进步。