gpt4 book ai didi

android - 我的 ListView 不工作

转载 作者:行者123 更新时间:2023-11-30 03:45:21 25 4
gpt4 key购买 nike

我的脚本不工作。我的目标是制作一个包含一些可点击项目的 ListView 。但该应用程序不断崩溃。如何解决这个问题?我是否正确使用适配器?

我使用标题、副标题和图像作为 ListView 中的项目。

package com.example.whs;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MenuAdapter extends BaseAdapter{
// Define variables
ArrayList<HashMap<String, String>> data;
Activity activity;
private static LayoutInflater inflater=null;

public MenuAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data = d;
}

@Override
public int getCount() {
return data.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row, null);

TextView title = (TextView)vi.findViewById(R.id.title); // title
TextView subtitle = (TextView)vi.findViewById(R.id.subtitle); // subtitle

HashMap<String, String> item = new HashMap<String, String>();
item = data.get(position);

// Setting all values in listview
title.setText(item.get(Index.TITLE));
subtitle.setText(item.get(Index.SUBTITLE));
return vi;
}

}

这是我的索引类:

package com.example.whs;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ListView;

public class Index extends Activity {

public static final Object TITLE = "title";
public static final Object SUBTITLE = "subtitle";
public static final Object THUMBNAIL = "thumbnail";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_index);

buildMenu();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.index, menu);
return true;
}

//Builds the menu for listview
public void buildMenu(){
ArrayList<HashMap<String, String>> menu = new ArrayList<HashMap<String, String>>();
//Arrays for info
String[] menuTitleArray = {"Gallerij"};
String[] menuSubtitleArray = {"Bekijk foto's en geef reacties"};
String[] menuThumbnailArray = {"gallery"};
for(int i=0; i < menuTitleArray.length; i++){
HashMap<String, String> item = new HashMap<String, String>();
item.put((String) TITLE, menuTitleArray[i]);
item.put((String) SUBTITLE, menuSubtitleArray[i]);
item.put((String) THUMBNAIL, menuThumbnailArray[i]);
menu.add(item);
}
MenuAdapter adapter = new MenuAdapter(this, menu);
ListView list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
}
}

日志文件:http://pastebin.com/kzeVMLuk

最佳答案

一个问题:

private static LayoutInflater inflater=null,

它永远不会在您的代码中实例化:

在你的构造函数中做:

private LayoutInflater inflater=null;
public MenuAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data = d;
inflater = LayoutInflater.from (a);
}

如你所见,我还去掉了static修饰符。我建议不要对与上下文相关的任何内容使用 static 修饰符,尤其是因为它已绑定(bind)到 Activity。

关于android - 我的 ListView 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com