【发布时间】:2016-06-13 17:03:13
【问题描述】:
当使用扩展 BaseAdpater 的 customadapter 时,我有一个 json 在列表视图中显示良好。在我的测试中,当没有加载到片段中时,我可以在读取我的 json 文件时完美地解析和膨胀列表视图。
我现在需要在片段中移动/显示它。我的片段正在扩展 ListFragment。我无法显示列表片段。
这是我的片段的代码:
public class ActivitySearchResultsTwo extends ListFragment {
private ListFragment mListView;
public static ActivitySearchResultsTwo newInstance() {
ActivitySearchResultsTwo fragment = new ActivitySearchResultsTwo();
return fragment;
}
public ActivitySearchResultsTwo() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_session_row, null);
return root;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mListView = (ListView) findViewById(R.id.list);
ArrayList<Sessions> sessionsList = Sessions.getRecipesFromFile("recipes.json",getActivity());
SessionsListAdapter adapter = new SessionsListAdapter(getActivity(),sessionsList);
setListAdapter(adapter);
//getListView().setOnItemClickListener(this);
}
}
我的列表视图声明如下:
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list"
android:background="@color/colorPrimaryLight"/>
这是我的对象类的相关摘录
public class Sessions {
public static ArrayList<Sessions> getRecipesFromFile(String filename, Context context){
final ArrayList<Sessions> recipeList = new ArrayList<>();
// json 文件解析的其余部分....//
最后是我的适配器列表....
public class SessionsListAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mInflater;
private ArrayList<Sessions> mDataSource;
public SessionsListAdapter(Context context, ArrayList<Sessions> items) {
mContext = context;
mDataSource = items;
mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
//1
@Override
public int getCount() {
return mDataSource.size();
}
//2
@Override
public Object getItem(int position) {
return mDataSource.get(position);
}
//3
@Override
public long getItemId(int position) {
return position;
}
//4
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
// 1
if(convertView == null) {
// 2
convertView = mInflater.inflate(R.layout.fragment_session_row, parent, false);
// 3
holder = new ViewHolder();
//holder.noOfPlacesTextView = (TextView) convertView.findViewById(R.id.noOfPlaces);
holder.remainingPlacesTextView = (TextView) convertView.findViewById(R.id.remainingPlaces);
holder.activityTimeTextView = (TextView) convertView.findViewById(R.id.activityTime);
holder.activityPriceTextView = (TextView) convertView.findViewById(R.id.activityPrice);
// 4
convertView.setTag(holder);
}
else{
// 5
holder = (ViewHolder) convertView.getTag();
}
// 6
// TextView noOfPlacesTextView = holder.noOfPlacesTextView;
TextView remainingPlacesTextView = holder.remainingPlacesTextView;
TextView activityTimeTextView = holder.activityTimeTextView;
TextView activityPriceTextView = holder.activityPriceTextView;
Sessions session = (Sessions) getItem(position);
// 2
// noOfPlacesTextView.setText(session.places);
remainingPlacesTextView.setText(session.remaining + " / " + session.places + " Left");
activityTimeTextView.setText(session.eventtime);
activityPriceTextView.setText(session.price);
// 3
//Picasso.with(mContext).load(provider.imageUrl).placeholder(R.mipmap.ic_launcher).into(thumbnailImageView);
return convertView;
}
private static class ViewHolder {
public TextView remainingPlacesTextView;
public TextView activityTimeTextView;
public TextView activityPriceTextView;
}
}
感谢任何帮助以使此列表显示在片段中。 谢谢
【问题讨论】:
-
请向我们展示包含您的 Fragment 的 Activity。还包括此 Activity 的布局,以便我们可以看到您定义片段或其占位符的位置。
标签: android listview android-fragments android-listfragment