android ArrayAdapter 滑动后通过onclick,position位置获取的内容不是看到列表的内容

androidArrayAdapter滑动后通过onclick,position位置获取的内容不是看到列表的内容,而是前面某个位置的数据。我是一次传入了50个数据。是不是... android ArrayAdapter 滑动后通过onclick,position位置获取的内容不是看到列表的内容,而是前面某个位置的数据。我是一次传入了50个数据。是不是滑动后position的值为界面显示数据的值。 展开
 我来答
无风的大浪
2017-02-28 · TA获得超过8294个赞
知道大有可为答主
回答量:7518
采纳率:87%
帮助的人:926万
展开全部
android中的Array adapter类用于把一个列表中的数据绑定到一个listview, 它就像一个桥梁,把数据和视图联系起来,下面以我的编码实践讲解如何使用arrayadapter来实现自定义的显示格式。如下图所示,它的功能是在文本框输入内容,点击OK,可以把输入的数据加到下面的列表中,列表每一行显示输入的内容和时期

1.添加两个layout, 一个是activity的, 一个是每一行数据的

<Button

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ok"
android:clickable="true"
android:id="@+id/btn3"

android:layout_below="@+id/et1"/>

<ListView
android:id = "@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/btn3"
/>
</RelativeLayout>

2.增加一个类用于保存每一行的数据:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background = "#ffffffff"
>
<TextView
android:id="@+id/date"
android:layout_width = "wrap_content"
android:layout_height = "fill_parent"
android:padding = "10dp"
android:scrollbars = "vertical"
android:fadingEdge = "vertical"
android:layout_alignParentRight="true"
android:textColor = "#ffff0000"
/>
<TextView
android:id="@+id/title"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
android:padding = "10dp"
android:scrollbars = "vertical"
android:fadingEdge = "vertical"
android:layout_alignParentLeft="true"
android:textColor = "#ffff0000"
/>
</RelativeLayout>

3.写一个自定义的array adapter,覆盖原来的getView方法,该方法的功能即是返回一个VIEW,这个view将被用于显示一行数据

package pack.xianle.test;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ToDoItem {
String task;
Date created;

public ToDoItem(String t, Date c){
task = t;
this.created = c;
}

public ToDoItem(String t){
this(t, new Date(java.lang.System.currentTimeMillis()));
}

public String getTask(){
return task;
}

public String getDate(){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
String dataString = sdf.format(created);
return dataString;
}

@Override
public String toString(){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
String dataString = sdf.format(created);
return "["+ dataString +"]" + task;
}

}

3.写activity的代码:

package pack.xianle.test;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MyArrayAdapter extends ArrayAdapter<ToDoItem> {
int resource;

public MyArrayAdapter(Context c, int r, List<ToDoItem> items){
super(c, r, items);
this.resource = r;

}

@Override
public View getView(int position, View v, ViewGroup parent) {
ToDoItem item=getItem(position);
LinearLayout todoView;
String taskString = item.getTask();
String dateString = item.getDate();
if (v == null) {
todoView = new LinearLayout(getContext());
LayoutInflater iv = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
iv.inflate(resource, todoView, true);

} else {
todoView = (LinearLayout)v;
}

TextView data = (TextView)todoView.findViewById(R.id.date);
TextView text = (TextView)todoView.findViewById(R.id.title);
data.setText(dateString);
text.setText(taskString);
return todoView;
}
}

ArrayAdapter也可以用于Spinner,如下代码所示:

package pack.xianle.test;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
public class ToDoList extends Activity {
private ArrayList<ToDoItem> todoItems;
private ListView mListView;
private EditText mEditText;
private MyArrayAdapter aa;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.todolist);

this.mListView = (ListView)this.findViewById(R.id.listview);
this.mEditText = (EditText)this.findViewById(R.id.et1);
todoItems = new ArrayList<ToDoItem>();
aa = new MyArrayAdapter(this, R.layout.todoitem,todoItems);
mListView.setAdapter(aa);
Button btn = (Button)this.findViewById(R.id.btn3);
btn.setOnClickListener(new OnClickListener(){
public void onClick(View v){
ToDoItem item = new ToDoItem(mEditText.getText().toString());
todoItems.add(0, item);
mEditText.setText("");
aa.notifyDataSetChanged();

}
});
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式