android listview焦点争端补充(侧滑添加和删除)
来源:互联网 发布:音乐可视化软件 编辑:程序博客网 时间:2024/04/30 08:37
前一段时间说明了listview争端的具体来源,主要就事件的分发和传递机制问题。当listview条目中涉及到多个Button及子类的控件时,发现按钮和listview的点击事件失控不响应了。由于上段时间说了事件的处理机制,现在就来用代码来实现相应的效果吧。
效果:侧滑,添加,删除,测试打印信息
条目布局文件:listview_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RelativeLayout
android:id="@+id/root"
android:layout_width="385dp"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"
android:gravity="center"
android:text="TextView" />
<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/join" />
</RelativeLayout>
<Button
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@string/unmount" />
<Button
android:id="@+id/button3"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@string/test" />
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
主界面布局:
<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" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
自定义adapter:
package com.example.new_until;
import java.util.List;
import com.example.test.R;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class Extra_adpter extends BaseAdapter {
private Context context;
private List<String> data = null;
private LayoutInflater inflater;
private View v;
private Button queren;
private Button shanchu;
private Button test;
private TextView tv;
private RelativeLayout root;
private int position;
private int Count = 23;
public Extra_adpter(Context context, List<String> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return data.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@SuppressLint({ "ViewHolder", "InflateParams" })
@Override
public View getView(int position, View view, ViewGroup parent) {
// TODO Auto-generated method stub
MyListener mListener = new MyListener(position);
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.listview_item, null);
tv = (TextView) v.findViewById(R.id.textView1);
queren = (Button) v.findViewById(R.id.button1);
shanchu = (Button) v.findViewById(R.id.button2);
root=(RelativeLayout) v.findViewById(R.id.root);
test=(Button) v.findViewById(R.id.button3);
tv.setText(Extra_adpter.this.data.get(position));
tv.setOnClickListener(mListener);
queren.setOnClickListener(mListener);
shanchu.setOnClickListener(mListener);
test.setOnClickListener(mListener);
return v;
}
private class MyListener implements OnClickListener {
public MyListener(int position) {
Extra_adpter.this.position = position;
}
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
switch (view.getId()) {
case R.id.button1:
System.out
.println("---------------------------您点击了添加项目----------------------");
Extra_adpter.this.Count += 1;
Extra_adpter.this.data.add("listview焦点争端测试项"
+ Extra_adpter.this.Count);
Extra_adpter.this.notifyDataSetChanged();
break;
case R.id.button2:
System.out
.println("---------------------你选择了删除选项-------------------------------------");
Extra_adpter.this.data.remove("listview焦点争端测试项" + position);
Extra_adpter.this.notifyDataSetChanged();
break;
case R.id.textView1:
System.out
.println("---------------------你选择了前面的文本项-------------------------------------");
break;
case R.id.button3:
System.out
.println("-----------------------------------你点击了测试按钮选项--------------------------------------");
break;
default:
break;
}
}
}
}
主界面程序:
package com.example.test;
import java.util.ArrayList;
import java.util.List;
import com.example.new_until.Extra_adpter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView lv;
private List<String> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data=new ArrayList<String>();
lv = (ListView) findViewById(R.id.listView1);
for(int i=0;i<24;i++){
data.add("listview焦点争端测试项"+i);
}
Extra_adpter extra_adpter = new Extra_adpter(this, data);
lv.setAdapter(extra_adpter);
}
}
注意:如果在HorizontalScrollView
的线性布局中定义过多的RelativeLayout或者LinearLayout等等容器类的,就会出现部分按钮等单击事件无响应。
- android listview焦点争端补充(侧滑添加和删除)
- android listview焦点争端
- 【android自定义控件】android ListView添加侧滑删除
- Android 自定义listview,添加删除。
- Android listView item侧滑实现删除和置顶功能
- Android listView item侧滑实现删除和置顶功能
- Android listview动态添加删除测试
- Android中ListView动态添加删除项
- Android中ListView动态添加删除项
- Android中ListView动态添加删除项
- Android中ListView动态添加删除项
- 给Android ListView添加删除item动画
- 给Android ListView添加删除item动画
- [Android]ListView焦点圈套
- android ListView 焦点问题
- Android ListView 焦点陷阱
- android listview焦点效果
- [Android]ListView焦点陷阱
- 第十二周上机实践——项目1-实现复数类中的运算符重载-(3)
- hdu1081(最大子矩阵和)
- d3中的selection.style和selection.attr的区别
- intent.setFlags方法中的参数值含义
- 欢迎使用CSDN-markdown编辑器
- android listview焦点争端补充(侧滑添加和删除)
- javaweb中常用的验证工具类
- 开源KVM管理平台
- 数据库设计
- session详解
- 机器学习课堂笔记(十八)
- Androin学习笔记二十:findViewById 为null
- Qt自定义样式/无边框窗口/子窗口模态/非模态问题
- 小爱