最近有人问我,在Android里:
android:onClick="OnItemEditClick"
android:paddingRight="5px" />
package com.test.customlistview;
import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemLongClickListener;
public class MainActivity extends Activity {
ListView dataListView;
SimpleAdapter listAdapter;
ArrayList> list;
private int location;
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.arg1 == 1) {
} else if (msg.arg1 == 2) {
} else if (msg.arg1 == 4) {
if (msg.what == 1) {
dataListView.getChildAt(msg.arg2).setBackgroundResource(
R.drawable.itemback);
}
}
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dataListView = (ListView) findViewById(R.id.lv_list);
list = new ArrayList>();
int count = 20;
HashMap map;
for (int i = 1; i <= count; i++) {
map = new HashMap();
map.put("num", i+ "");
map.put("a1", "²=");
map.put("a2", ""+i*i);
list.add(map);
}
listAdapter = new SimpleAdapter(this, list, R.layout.datalist,
new String[] { "num", "a1", "a2" }, new int[] { R.id.tv_num,
R.id.tv_numx, R.id.tv_numy });
dataListView.setAdapter(listAdapter);
dataListView.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView> arg0, View view,
int position, long id) {
location = position;
final View nowView = (View) view.findViewById(R.id.ib_edit);
Toast.makeText(getBaseContext(), "location=" + location, 2000)
.show();
OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
Toast.makeText(getBaseContext(), "编辑", Toast.LENGTH_LONG).show();
} else if (which == 1) {
Toast.makeText(getBaseContext(), "删除", Toast.LENGTH_LONG).show();
}
}
};
dataListView.getChildAt(location).setBackgroundResource(
R.drawable.item_frame);
Message message = new Message();
message.arg1 = 4;
message.arg2 = location;
message.what = 1;
mHandler.sendMessageDelayed(message, 500);
String[] Menu = { "编辑", "删除" };
new AlertDialog.Builder(MainActivity.this).setItems(Menu,
listener).show();
return false;
}
});
}
public void OnItemEditClick(View v) {
RelativeLayout layout = (RelativeLayout) v.getParent();
TextView tv1=(TextView)layout.findViewById(R.id.tv_num);
TextView tv2=(TextView)layout.findViewById(R.id.tv_numx);
TextView tv3=(TextView)layout.findViewById(R.id.tv_numy);
ImageButton ib=(ImageButton)layout.findViewById(R.id.ib_edit);
String str="按钮"+tv1.getText()+"点击啦\n"+tv1.getText()+tv2.getText()+tv3.getText();
Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show();
}
}
OnItemEditClick(View v)方法中通过v.getParent();找到她的容器控件,前面的(RelativeLayout)根据你自己的布局里的容器控件而定。然后即可使用该容器控件找到他的所有自控件,然后读者想干嘛就干嘛啦~
dataListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> arg0, View view, int arg2,
long arg3) {
TextView tv=(TextView)view.findViewById(R.id.tv_num);
Toast.makeText(getBaseContext(), "您点击了第" + tv.getText()+"行", 2000).show();
}
});
修改后的MainActivity.java代码如下
package com.test.customlistview;
import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemLongClickListener;
public class MainActivity extends Activity {
ListView dataListView;
SimpleAdapter listAdapter;
ArrayList> list;
private int location;
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.arg1 == 1) {
} else if (msg.arg1 == 2) {
} else if (msg.arg1 == 4) {
if (msg.what == 1) {
dataListView.getChildAt(msg.arg2).setBackgroundResource(
R.drawable.itemback);
}
}
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dataListView = (ListView) findViewById(R.id.lv_list);
list = new ArrayList>();
int count = 20;
HashMap map;
for (int i = 1; i <= count; i++) {
map = new HashMap();
map.put("num", i+ "");
map.put("a1", "²=");
map.put("a2", ""+i*i);
list.add(map);
}
listAdapter = new SimpleAdapter(this, list, R.layout.datalist,
new String[] { "num", "a1", "a2" }, new int[] { R.id.tv_num,
R.id.tv_numx, R.id.tv_numy });
dataListView.setAdapter(listAdapter);
dataListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> arg0, View view, int arg2,
long arg3) {
TextView tv=(TextView)view.findViewById(R.id.tv_num);
Toast.makeText(getBaseContext(), "您点击了第" + tv.getText()+"行", 2000).show();
}
});
dataListView.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView> arg0, View view,
int position, long id) {
location = position;
final View nowView = (View) view.findViewById(R.id.ib_edit);
Toast.makeText(getBaseContext(), "location=" + location, 2000)
.show();
OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
Toast.makeText(getBaseContext(), "编辑", Toast.LENGTH_LONG).show();
} else if (which == 1) {
Toast.makeText(getBaseContext(), "删除", Toast.LENGTH_LONG).show();
}
}
};
dataListView.getChildAt(location).setBackgroundResource(
R.drawable.item_frame);
Message message = new Message();
message.arg1 = 4;
message.arg2 = location;
message.what = 1;
mHandler.sendMessageDelayed(message, 500);
String[] Menu = { "编辑", "删除" };
new AlertDialog.Builder(MainActivity.this).setItems(Menu,
listener).show();
return false;
}
});
}
public void OnItemEditClick(View v) {
RelativeLayout layout = (RelativeLayout) v.getParent();
TextView tv1=(TextView)layout.findViewById(R.id.tv_num);
TextView tv2=(TextView)layout.findViewById(R.id.tv_numx);
TextView tv3=(TextView)layout.findViewById(R.id.tv_numy);
ImageButton ib=(ImageButton)layout.findViewById(R.id.ib_edit);
String str="按钮"+tv1.getText()+"点击啦\n"+tv1.getText()+tv2.getText()+tv3.getText();
Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show();
}
}
我的QQ:1239848066
反馈请猛戳:
原创博客:转载后记得附带原文链接,谢谢~