数组列表和自定义适配器
问题描述:
我已经创建了一个数组列表:数组列表和自定义适配器
public class TweetListActivity extends ListActivity {
private ListView tweetListView;
private ArrayAdapter tweetItemArrayAdapter;
private final List<Tweet> tweets = new ArrayList<Tweet>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tweet_list);
for (int i = 0; i < 20; i++)
{
Tweet tweet = new Tweet();
tweet.setTitle("A nice header for Tweet # " + i);
tweet.setBody("Some random body text for the tweet # " + i);
tweets.add(tweet);
}
tweetItemArrayAdapter = new TweetAdapter(this,tweets);
setListAdapter(tweetItemArrayAdapter);
}
}
而对于该列表中创建自定义适配器是:
public class TweetAdapter extends ArrayAdapter<Tweet>
{
private List<Tweet> tweetslocal;
private LayoutInflater inflater;
public TweetAdapter(Activity activity, List<Tweet> tweets) {
super(activity, R.layout.row_tweet, tweets);
inflater = activity.getWindow().getLayoutInflater();
tweetslocal = tweets;
}
@Override
public Tweet getItem(int arg0) {
return tweetslocal.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = inflater.inflate(R.layout.row_tweet, parent, false);
TextView tweetTitle = (TextView) row.findViewById(R.id.tweetTitle);
TextView tweetBody = (TextView) row.findViewById(R.id.tweetBody);
Tweet tweet = tweetslocal.get(position);
tweetTitle.setText(tweet.getTitle());
tweetBody.setText(tweet.getBody());
return row;
}
}
但我无法得到所需的输出。所需的输出是一个推文列表,标题为“鸣叫1,2,3等等的好标题”。但是我得到的结果是“推文19,19,19等的好头”。任何人都可以提出我犯了什么错误?
答
解决
实施
的Bean;
in Tweet.java
答
试试这个
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = inflater.inflate(R.layout.row_tweet, parent, false);
TextView tweetTitle = (TextView) row.findViewById(R.id.tweetTitle);
TextView tweetBody = (TextView) row.findViewById(R.id.tweetBody);
tweetTitle.setText(tweetslocal.get(position).getTitle());
tweetBody.setText(tweetslocal.get(position).getBody());
return row;
}
+0
仍然给出相同的输出。没有工作。 –
+0
调试并检查每次迭代中的位置值 – Jas
您的代码似乎没问题。在你的自定义适配器类中添加'getCount()'方法,它返回'tweetslocal.size();' – Piyush
增加了getCount()方法,但没有结果。 –