我正在尝试将自定义列表视图放在选项卡式片段中,我最接近的是将其放入双窗格活动的左侧“列表”窗格中。
这是问题所在。 我觉得我的自定义适配器出了问题,而且我没有正确引用上下文。对于tab1fragment,我很确定我正在错误地传递该视图。 作为一个注释,我没有在OnCreate上填充mylistview,而是将我的listView放在onAttached中;我听说最好避免某些函数在创建过程中返回null。
此应用程序的设计是......
单活动单窗格 - >多窗格活动...
多窗格活动 - >左边是一个片段的小容器,它包含一个列表视图和一些文本框。 [我们现在叫这个列表查看A.]
多窗格活动 - >对,细节窗格: 在详细信息窗格中是一个托管选项卡的片段,每个选项卡都是一个片段。我想在每个选项卡中放置一个listView。 [现在列出视图B?]
当我尝试最接近的时候,我会把它贴在我的第一个“listview A”中。
为了简洁起见,如果您觉得自己需要更多,请不要犹豫,我会砍掉密码。 [另有约7-8页]我发表评论,指出我认为有问题的代码。我没有完全理解我的listAdapter中的getView,特别是if (convertView == null)
代码块。
如果你看到任何其他奇怪的问题,并想提出建设性的批评,我完全渴望进行代码审查!
其他注意事项: 在我的所有代码上使用fragmentupport管理器。
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
ArrayList<Item> menu = new ArrayList<Item>();
Item item1 = new Item("Coke","Pure cane sugar!", 2.50);
Item item2 = new Item("Dr Pepper","Pure cane sugar!", 3.00);
Item item3 = new Item("Sprite","Pure cane sugar!", 2.50);
menu.add(item1);
menu.add(item2);
menu.add(item3);
View v = getView();
CustomOrderListAdapter adapter = new CustomOrderListAdapter(getActivity(),menu);
ListView listView = (ListView) v.findViewById(R.id.drinkList); //Problem code
listView.setAdapter(adapter);
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- When I got this to work I was not using @id/drinkList but @+id/android:list -->
<ListView
android:id="@+id/drinkList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:dividerHeight="1dp"
android:background="@color/dark_blue" />
</RelativeLayout>
import java.util.ArrayList;
import java.util.Arrays;
import com.landa.backend.*;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.landa.R;
public class CustomOrderListAdapter extends BaseAdapter {
Context context;
int layoutResourceId;
private ArrayList<Item> listData; //Once we get json working be a REALLY good idea to actually use the generic features of this
private LayoutInflater layoutInflater;
public CustomOrderListAdapter(Context context, ArrayList<Item> listData) {
this.context = context;
this.listData = listData;
}
@Override
public int getCount() {
return listData.size();
}
@Override
public Object getItem(int position) {
return listData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
OrderHolder holder;
if (convertView == null) {
layoutInflater = LayoutInflater.from(context); //Problem code
convertView = layoutInflater.inflate(R.layout.customer_order_list_row, null);
holder = new OrderHolder();
holder.nameView = (TextView) convertView.findViewById(R.id.itemName);
holder.priceView = (TextView) convertView.findViewById(R.id.price);
holder.removedItemsView = (TextView) convertView.findViewById(R.id.removedItems);
convertView.setTag(holder);
} else {
holder = (OrderHolder) convertView.getTag();
}
Item item = (Item)listData.get(position);
holder.nameView.setText(item.getName());
holder.priceView.setText(String.valueOf(item.getPrice()));
//holder.removedItemsView.setText(Arrays.toString(item.getRemoved()));
return convertView;
}
static class OrderHolder {
TextView nameView;
TextView priceView;
TextView removedItemsView;
}
}
答案 0 :(得分:0)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ArrayList<Item> menu = new ArrayList<Item>();
Item item1 = new Item("Coke","Pure cane sugar!", 2.50);
Item item2 = new Item("Dr Pepper","Pure cane sugar!", 3.00);
Item item3 = new Item("Sprite","Pure cane sugar!", 2.50);
menu.add(item1);
menu.add(item2);
menu.add(item3);
CustomOrderListAdapter adapter = new CustomOrderListAdapter(getActivity(),menu);
View view = inflater.inflate(R.layout.Tab1Drink, null);
ListView listView = (ListView) view.findViewById(R.id.drinkList); //Problem code
listView.setAdapter(adapter);
return view;
}