【问题标题】:How to use ListFragment with BaseAdpater and Json file如何将 ListFragment 与 BaseAdpater 和 Json 文件一起使用
【发布时间】: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


【解决方案1】:

发现问题,我没有使用列表布局更新片段活动中的 onCreateView...我仍然将其设置为显示我用于测试的先前布局。

View root = inflater.inflate(R.layout.fragment_session_list, container, false);

如下设置解决了我的问题。

@ishmaelMakitla,感谢您花时间讨论这个话题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    • 2018-06-02
    相关资源
    最近更新 更多