Android 单击列表视图阵列适配器位置
Android 单击列表视图阵列适配器位置,android,listview,position,adapter,Android,Listview,Position,Adapter,我有一个带有ArrayAdapter的listview。某个位置的ListView在某个ArrayList中使用相同的位置填充自己。在每个列表项中 有两个按钮。当onClickListener启动时,它会 被重写的视图getView的位置(位置、视图等)从ArrayList中取出一些变量并将其发送到数据库。问题是,位置不是很准确。有时我会得到一个列表项在我想要的列表项之上的位置。代码如下: public class MemoAdapter extends ArrayAdapter<Stri
我有一个带有ArrayAdapter的listview。某个位置的ListView在某个ArrayList中使用相同的位置填充自己。在每个列表项中 有两个按钮。当onClickListener启动时,它会 被重写的视图getView的位置(位置、视图等)从ArrayList中取出一些变量并将其发送到数据库。问题是,位置不是很准确。有时我会得到一个列表项在我想要的列表项之上的位置。代码如下:
public class MemoAdapter extends ArrayAdapter<String> {
private final Activity context;
ArrayList<String> commentarray;
ArrayList<String> fromarray;
ArrayList<String> datearray;
ArrayList<String> ids;
ArrayList<String> feedback;
Dialog dialog;
EditText feedbacktxt;
String token;
String website;
public MemoAdapter(Activity context, ArrayList<String> commentArray,
ArrayList<String> fromArray, ArrayList<String> dateArray,
ArrayList<String> ids, ArrayList<String> feedback, String token,
String website) {
super(context, R.layout.memo_listitem, commentArray);
this.context = context;
this.commentarray = commentArray;
this.fromarray = fromArray;
this.datearray = dateArray;
this.ids = ids;
this.feedback = feedback;
this.token = token;
this.website = website;
}
@Override
public long getItemId(int position) {
return 0;
}
// static to save the reference to the outer class and to avoid access to
// any members of the containing class
static class ViewHolder {
public TextView textView;
public TextView textView2;
public TextView textView3;
public TextView textView4;
// public ImageView reply;
// public ImageView accept;
public Button reply;
public Button accept;
public RelativeLayout r;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.memo_listitem, null);
holder = new ViewHolder();
holder.textView = (TextView) rowView
.findViewById(R.id.memodescription);
holder.textView2 = (TextView) rowView.findViewById(R.id.memofrom);
holder.textView3 = (TextView) rowView.findViewById(R.id.memodate);
holder.textView4 = (TextView) rowView
.findViewById(R.id.memofeedback);
holder.reply = (Button) rowView.findViewById(R.id.buttonFeedback);
holder.accept = (Button) rowView.findViewById(R.id.buttonAccepteer);
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
holder.textView.setText(commentarray.get(position));
holder.textView2.setText(datearray.get(position));
holder.textView3.setText(fromarray.get(position));
holder.textView4.setText(feedback.get(position));
if (holder.textView4.getText().toString().equals("")
|| holder.textView4.getText().toString().equals(" ")) {
holder.textView4.setText(" - ");
}
// ONCLICKLISTENER FOR REPLYIMAGE
holder.reply.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog = new Dialog(NostradamusActivity2.parentcontext);
dialog.setContentView(R.layout.memo_dialog);
dialog.setTitle("Feedback");
feedbacktxt = (EditText) dialog.findViewById(R.id.memoeddittxt);
Button cancel = (Button) dialog
.findViewById(R.id.memobtncancel);
// CANCEL BUTTON ONCLICKLISTENER REPLYIMAGE
cancel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
Button okay = (Button) dialog.findViewById(R.id.memobtnokay);
// OKAY BUTTON ONCLICKLISTENER REPLYIMAGE
okay.setOnClickListener(new OnClickListener() {
private String errormessage;
private AlertDialog alertDialog;
public void onClick(View v) {
Database2 db = new Database2(
"https://"
+ website
+ "/index2.php?option=com_webservices&controller=json&method=core.memos.memo_feedback&token=",
"token", token, "id", ids.get(position),
"memo_feedback", feedbacktxt.getText()
.toString());
}
// //ACCEPTEER MEMO BUTTON ONCLICKLISTENER
holder.accept.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(
NostradamusActivity2.parentcontext);
builder.setMessage("Heeft u de opdracht uitgevoerd?")
.setCancelable(false)
.setPositiveButton("Ja",
new DialogInterface.OnClickListener() {
private AlertDialog alertDialog;
public void onClick(DialogInterface dialog,
int id) {
Database2 dbaccept = new Database2(
"http://intern.koeckers.nl/index2.php?option=com_webservices&controller=json&method=core.memos.memo_state&token=",
"token", token, "id", ids
.get(position),
"memo_completed", "1");
dialog.dismiss();
}
} catch (Exception e) {
e.printStackTrace();
}
}
})
.setNegativeButton("Nee",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
return rowView;
}
}
公共类MemoAdapter扩展了ArrayAdapter{
私人最终活动背景;
数组列表;
ArrayList fromarray;
ArrayList日期数组;
数组列表ID;
阵列列表反馈;
对话;
编辑文本反馈;
字符串标记;
字符串网站;
公共MemoAdapter(活动上下文、ArrayList commentArray、,
ArrayList fromArray,ArrayList dateArray,
ArrayList ID、ArrayList反馈、字符串标记、,
字符串(网站){
super(上下文,R.layout.memo\u列表项,commentArray);
this.context=上下文;
this.commentarray=commentarray;
this.fromarray=fromarray;
this.datearray=datearray;
this.ids=ids;
这个。反馈=反馈;
this.token=token;
this.website=网站;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
//static保存对外部类的引用并避免访问
//包含类的任何成员
静态类视窗夹{
公共文本视图文本视图;
公共文本视图文本视图2;
公共文本视图文本视图3;
公共文本视图文本视图4;
//公众意见回复;
//公众形象接受;
公共按钮回复;
公共按钮接受;
公共关系;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
最终持票人;
视图行视图=转换视图;
if(rowView==null){
LayoutInflater充气器=上下文。getLayoutInflater();
rowView=充气机。充气(R.layout.memo\u列表项,空);
holder=新的ViewHolder();
holder.textView=(textView)行视图
.findViewById(R.id.memodescription);
holder.textView2=(TextView)rowView.findViewById(R.id.memofrom);
holder.textView3=(TextView)rowView.findViewById(R.id.memodate);
holder.textView4=(TextView)行视图
.findViewById(R.id.memofeedback);
holder.reply=(按钮)rowView.findViewById(R.id.buttonFeedback);
holder.accept=(按钮)rowView.findViewById(R.id.ButtonCepteer);
rowView.setTag(支架);
}否则{
holder=(ViewHolder)rowView.getTag();
}
holder.textView.setText(commentarray.get(position));
holder.textView2.setText(datearray.get(position));
holder.textView3.setText(fromarray.get(position));
holder.textView4.setText(feedback.get(position));
if(holder.textView4.getText().toString()等于(“”)
||holder.textView4.getText().toString().equals(“”){
holder.textView4.setText(“-”);
}
//REPLYIMAGE的ONCLICKLISTENER
holder.reply.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
dialog=新对话框(NostradamusActivity2.parentcontext);
setContentView(R.layout.memo_对话框);
对话框。设置标题(“反馈”);
feedbacktxt=(EditText)dialog.findViewById(R.id.MemoEdditText);
按钮取消=(按钮)对话框
.findviewbyd(R.id.memobtncancel);
//单击Listener REPLYIMAGE时取消按钮
cancel.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
dialog.dismise();
}
});
按钮OK=(按钮)dialog.findViewById(R.id.memobtnokay);
//OK按钮单击Listener REPLYIMAGE
好的。setOnClickListener(新的OnClickListener(){
私有字符串错误消息;
私人AlertDialog AlertDialog;
公共void onClick(视图v){
Database2 db=新数据库2(
“https://”
+网站
+“/index2.php?option=com\u webservices&controller=json&method=core.memos.memo\u feedback&token=“,
“令牌”,令牌,“id”,id.get(位置),
“备忘录反馈”,feedbacktxt.getText()
.toString());
}
////单击Listener上的ACCEPTEER备注按钮
holder.accept.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
AlertDialog.Builder=新建AlertDialog.Builder(
NostradamusActivity2.parentcontext);
builder.setMessage(“Heeft u de opdracht uitgevored?”)
.setCancelable(错误)
.setPositiveButton(“Ja”,
新建DialogInterface.OnClickListener(){
私人AlertDialog AlertDialog;
公共void onClick(对话框接口对话框,
int id){
Database2 dbaccept=新数据库2(
"http://intern.koeckers.nl/index2.php?option=com_webservices&controller=json&method=core.memos.memo_state&token=",
“代币”,代币,“我
Database2 dbaccept = new Database2(
"http://intern.koeckers.nl/index2.php? option=com_webservices&controller=json&method=core.memos.memo_state&token=",
"token", token, "id", ids.get(position),
"memo_completed", "1");