我一直在做Android平板电脑的应用程序。在这,我需要显示两个ListViews。一个用于简单的listview,一个用于自定义listview。一旦我点击简单的列表视图行,那么这些细节必须显示在另一个自定义列表视图中。为此,我被分割为在单个屏幕上显示两个列表视图。对于自定义ListView,我被自定义适配器绑定自定义数据。但是当我点击简单的列表视图行时,应用程序显示没有响应错误。我的代码会是这样的。 对于我的片段包含这样的如何在android Fragement中设置自定义ListView?
public class listDetails extends Fragment{
private int nAndroids;
public static ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
ListDetailsAdapter adapter;
static final String KEY_Title = "title";//"item";
public listDetails() {
}
/**
* Constructor for being created explicitly
*/
public listDetails(int nAndroids) {
this.nAndroids = nAndroids;
}
/**
* If we are being created with saved state, restore our state
*/
@Override
public void onCreate(Bundle saved) {
super.onCreate(saved);
if (null != saved) {
nAndroids = saved.getInt("nAndroids");
}
}
/**
* Save the number of Androids to be displayed
*/
@Override
public void onSaveInstanceState(Bundle toSave) {
toSave.putInt("nAndroids", nAndroids);
}
/**
* Make a grid and fill it with n Androids
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) {
int n;
Context c = getActivity().getApplicationContext();
LinearLayout l = new LinearLayout(c);
String listitems[]=new String[nAndroids];
HashMap<String, String> map = new HashMap<String, String>();
map.put(KEY_Title, "Question1");
map = new HashMap<String, String>();
map.put(KEY_Title, "Question2");
map = new HashMap<String, String>();
map.put(KEY_Title, "Question3");
map = new HashMap<String, String>();
map.put(KEY_Title, "Question4");
menuItems.add(map);
for (n = 0; n < nAndroids; n++)
{
listitems[n] = "one"+n;
ListView list = new ListView(c);
adapter = new ListDetailsAdapter(this, menuItems);
list.setAdapter(adapter);
}
return l;
}
代码}
我的自定义适配器这样的代码
public class ListDetailsAdapter extends BaseAdapter{
///private listDetails listactivity;
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ListDetailsAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.customlist, null);
TextView title = (TextView)vi.findViewById(R.id.txtTitle);
Button btnone = (Button)vi.findViewById(R.id.btnfirst);
Button btntwo = (Button)vi.findViewById(R.id.btnsecond);
Button btnthree = (Button)vi.findViewById(R.id.btnthird);
Button btnfour = (Button)vi.findViewById(R.id.btnfourth);
Button btnfive = (Button)vi.findViewById(R.id.btnfifth);
btnone.setOnClickListener(oneclick);
btntwo.setOnClickListener(twoclick);
btnthree.setOnClickListener(thrirdclick);
HashMap<String, String> mymap = new HashMap<String, String>();
mymap = data.get(position);
title.setText(mymap.get(listDetails.KEY_Title));
return vi;
}
private View.OnClickListener oneclick = new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Log.e("button clicked", "button one clicked");
}
};
}
请指引我什么在上面的代码会错。
我在代码中找不到任何明显的错误,但是如果您在Eclipse中使用调试器并且在设置断点后执行代码onClickListener中的Log.e()语句,或许您可以查明问题所在? – span
我看到你添加了三个不同的onClickListners。 他们在哪里,为什么你想这样做? btnone.setOnClickListener(oneclick); btntwo.setOnClickListener(twoclick); btnthree.setOnClickListener(thrirdclick); – Noloxs
是的,我们可以采取一个操作方法来处理多个按钮动作。但关于我的问题,这不是问题。只是我喜欢那样。但我没有实现这个功能。 – nari