ListView的优化
来源:互联网 发布:mysql怎么修改数据库名 编辑:程序博客网 时间:2024/06/14 20:10
效果图:点击item是弹出Toast,点击Test时也相应弹出Toast。此题目是是一家大公司的面试题,哥们几个去面试被坑了,当时写不出来怀疑有事件冲突,结果因为数据不是很大,没有冲突。直接上代码:
package com.example.listviewload;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView) findViewById(R.id.listView);
MyAdapter adapter=new MyAdapter();
listview.setAdapter(adapter);
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(MainActivity.this, "This Item is "+(position+1), 0).show();
}
});
}
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return 1000;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null){
convertView = View.inflate(MainActivity.this,R.layout.item, null);
viewHolder = new ViewHolder();
viewHolder.tv1 = (TextView) convertView.findViewById(R.id.tv1);
viewHolder.tv2= (TextView) convertView.findViewById(R.id.tv2);
viewHolder.bt = (Button) convertView.findViewById(R.id.bt);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.tv1.setText("Title "+(position+1)+"");
viewHolder.tv2.setText("This item position is "+(position+1)+"");
/**
* Button设置点击事件
*/
viewHolder.bt.setFocusable(false);
viewHolder.bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "This is buton"+(position+1), Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
}
static class ViewHolder{
TextView tv1;
TextView tv2;
Button bt;
}
}
布局:item.xm:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="5dp"
android:id="@+id/ll"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tv1"
android:text="textID"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tv2"
android:text="text2" />
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text"
android:id="@+id/bt"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
布局2:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ListView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/listView"
></ListView>
</RelativeLayout>
- ListView的优化
- listView的优化
- ListView的优化
- Listview的优化
- listView的优化
- ListView的优化
- ListView的优化
- listview的优化
- ListView的优化(1)
- ListView的优化(2)
- ListView的优化(3)
- ListView的优化
- listView的优化
- Listview的优化
- 关于listview的优化
- ListView的优化
- ListView的优化
- ListView的优化
- sicily 1259. Sum of Consecutive Primes
- 自定义泛型JAVA_116-118
- UI基础-事件处理
- 安卓 URL编码 和解码注意事项
- HDOJ 题目4284 A Famous Stone Collector(组合数学)
- ListView的优化
- 智能指针sp/wp使用
- MySQL存储引擎总结
- web开发中常用的几种统计图使用
- 配置CKFinder(Java版)
- meminfo
- UVa-511-Way to SanJose?
- 第四章 使用OpenCV探测来至运动的结构——Chapter 4:Exploring Structure from Motion Using OpenCV
- REST API 安全设计指南