首先扯点别的:最近刚买了一个摇杆(玩拳皇97用的,拳霸的)。开始我以为买了摇杆我的拳皇水平会迅速提高,然而,上个星期6和建总打了一天被虐的惨啊,也是艰难。当时就想砸摇杆啊,最后还是忍住了,不能怪摇杆,还是自己的技术手法不行,还要多加练习。行,接下来进入正题吧。
第一点 : 前段时间发现了一个替代ListView的控件 RecyclerView,从网上看了看资料,说的天花乱坠,自己集成到自己的项目里,用了用,开始感觉还是不错的,但是当RecyclerView要展示的数据增加的时候,尤其是从网上加载图片的时候,就会变得十分的卡顿,而且RecyclerView并没有自带的点击事件和长按事件,也没有分割线,这三样都得自己实现,也是比较麻烦,痛定思痛,最后还是依然决定再回到ListView的怀抱里。好久时间没用ListView,已经很生疏了,今天就记载了一下ListView的简单用法。ps:从网络上加载图片还是使用universal-image-loader吧,别用Volley了,真心不好使。
先看效果,感觉有用再往下看
子项点击事件
子项长按事件,弹出删除对话框
接下啦就直接上代码了,MainActivity.java,代码很简单,直接看注释就行了
package com.example.listviewdemo;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
public class MainActivity extends ActionBarActivity {
private ListView listView;
private List<MyBean>list;//数据源
private MyAdapter adapter;//自定义的适配器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ListView) findViewById(R.id.listView);
setAdapter();
//listview添加子项的点击事件
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
//点击一项的时候,给一个Toast
MyBean bean=adapter.getItem(position);
Toast.makeText(MainActivity.this, bean.getTitle(), Toast.LENGTH_SHORT).show();
}
});
//listview添加子项的长按事件
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
deleteItem(position);
return true;
}
});
}
/**
* 长按的时候删除listview中的某一项
* @param position 要删除的子项在listview中的位置
*/
private void deleteItem( final int position){
AlertDialog dialog=new AlertDialog.Builder(MainActivity.this)
.setTitle("提示")
.setMessage("确实要删除当前项吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
list.remove(position);
adapter.notifyDataSetChanged();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// 点击取消。没有动作
}
})
.show();
}
/**
* 该listview 添加适配器
*/
private void setAdapter(){
list=new ArrayList<MyBean>();
//给list装几条数据
initData();
adapter=new MyAdapter(MainActivity.this, R.layout.listview_item, list);
listView.setAdapter(adapter);
//当adapter中数据改变的时候时,通知listview
adapter.notifyDataSetChanged();
}
/**
* 给list初始化数据
*/
private void initData() {
for (int i = 0; i <10; i++) {
MyBean bean=new MyBean("Title "+i, "Detail "+i);
list.add(bean);
}
}
}
MyAdapter .java
package com.example.listviewdemo;
import java.util.List;
import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class MyAdapter extends ArrayAdapter<MyBean> {
private int resource;
private Context context;
public MyAdapter(Context context, int resource, List<MyBean> lists) {
super(context, resource, lists);
this.context=context;
this.resource=resource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder holder;
MyBean bean=getItem(position);
if (convertView==null) {
view=LayoutInflater.from(context).inflate(resource, parent, false);
holder=new ViewHolder();
holder.textViewTitle=(TextView) view.findViewById(R.id.textviewTitle);
holder.textViewDetail=(TextView) view.findViewById(R.id.textviewDetail);
view.setTag(holder);
} else {
view=convertView;
holder=(ViewHolder) view.getTag();
}
holder.textViewTitle.setText(bean.getTitle());
holder.textViewDetail.setText(bean.getDetail());
return view;
}
//内部类,用来提高listView的性能
private static class ViewHolder{
TextView textViewTitle;
TextView textViewDetail;
}
}
MyBean.java 实体类
package com.example.listviewdemo;
public class MyBean {
private String title;
private String detail;
public MyBean(String title, String detail) {
this.title=title;
this.detail=detail;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
}
行,差不多就是这样了,今天天气比较冷,赶紧钻进被窝看小说吧,这双腿冻得冰凉啊。如果想要完整的工程代码连接地址如下http://download.csdn.net/detail/leilifengxingmw/9448400