Java 未连接适配器,跳过片段中包含reyclerview和json的布局

Java 未连接适配器,跳过片段中包含reyclerview和json的布局,java,android,json,android-fragments,android-adapter,Java,Android,Json,Android Fragments,Android Adapter,我确信json的一切都很好,但我认为我并没有把setAdapter()放在好的位置。所以我在这里犯了个错误?或者我在别的地方犯了个错误。任何帮助都将不胜感激。 代码如下: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.gifts_activity,

我确信json的一切都很好,但我认为我并没有把
setAdapter()
放在好的位置。所以我在这里犯了个错误?或者我在别的地方犯了个错误。任何帮助都将不胜感激。 代码如下:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.gifts_activity, container, false);
    dbh = new DBHelper(getActivity());
    avLoadingIndicatorView = (AVLoadingIndicatorView)
            v.findViewById(R.id.avloadingIndicatorView);
    recyclerView = (RecyclerView) v.findViewById(R.id.recycler_view);
    recyclerView.addItemDecoration(new SimpleDividerItemDecoration(getActivity().getResources()));

    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    giftItemSorter = new GiftItemSorter();
    int birthdayId = getActivity().getIntent().getIntExtra(EditBirthday.KEY_EXTRA_BIRTHDAY_ID, 0);
    Cursor rs = dbh.getBirthdayId(birthdayId);
    rs.moveToFirst();

    new AsyncHttpTask().execute(url);

    if (!rs.isClosed()) {
        rs.close();}

    return v;
}

void startAnim(){
    avLoadingIndicatorView.setVisibility(View.VISIBLE);
}

void stopAnim(){
    avLoadingIndicatorView.setVisibility(View.GONE);
}

public class AsyncHttpTask extends AsyncTask<String, Void, Integer> {

    @Override
    protected void onPreExecute() {
        startAnim();
    }

    @Override
    protected Integer doInBackground(String... params) {
        Integer result = 0;
        HttpURLConnection urlConnection;
        try {
            URL url = new URL(params[0]);
            urlConnection = (HttpURLConnection) url.openConnection();
            int statusCode = urlConnection.getResponseCode();

            // 200 represents HTTP Ok
            if (statusCode == 200) {
                BufferedReader r = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                StringBuilder response = new StringBuilder();
                String line;
                while ((line = r.readLine()) != null) {
                    response.append(line);
                }
                parseResult(response.toString());
                result = 1; // Successful
            } else {
                result = 0; //"Failed to fetch data!";
            }
        } catch (Exception e) {
            Log.d(TAG, e.getLocalizedMessage());
        }
        return result; //"Failed to fetch data!";
    }
    @Override
    protected void onPostExecute(Integer result) {
        // Download complete. Let us update UI
        stopAnim();

        if (result == 1) {
            giftListAdapter = new GiftListAdapter(getActivity(), gifts);
            reyclerView.setAdapter(giftListAdapter);
        } else {
            SuperActivityToast.create(getActivity(), getString(R.string.err_msg_no_internet),
                    SuperToast.Duration.SHORT, Style.getStyle(Style.RED, SuperToast.Animations.FLYIN)).show();
        }
    }
}

private void parseResult(String result) {
    try {
        JSONObject response = new JSONObject(result);
        JSONArray movies = response.optJSONArray("movies");
        gifts = new ArrayList<>();

        for (int i = 0; i < movies.length(); i++) {
            JSONObject post = movies.optJSONObject(i);
            GiftItem item = new GiftItem();
            item.setThumbnail(post.optString("image"));
            item.setTitle(post.optString("title"));
            item.setDescription(post.optString("description"));
            item.setSource(getString(R.string.source) + " " + post.optString("source"));
            item.setTotalRating(post.optInt("rating"));
            item.setPrice(post.optDouble("price"));

            gifts.add(item);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
@覆盖
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图v=充气机。充气(R.layout.U活动,容器,错误);
dbh=newdbhelper(getActivity());
avLoadingIndicatorView=(avLoadingIndicatorView)
v、 findViewById(R.id.AvLoadingIndicator视图);
recyclerView=(recyclerView)v.findViewById(R.id.recycler\u视图);
addItemDecoration(新的SimpleDividerItemDecoration(getActivity().getResources());
recyclerView.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(getActivity());
setItemAnimator(新的DefaultItemAnimator());
giftItemSorter=新的giftItemSorter();
int birthdayId=getActivity().getIntent().getIntExtra(EditBirthday.KEY\u EXTRA\u BIRTHDAY\u ID,0);
游标rs=dbh.getBirthdayId(birthdayId);
rs.moveToFirst();
新建AsyncHttpTask().execute(url);
如果(!rs.isClosed()){
rs.close();}
返回v;
}
void startAnim(){
avLoadingIndicatorView.setVisibility(视图.可见);
}
void stopAnim(){
avLoadingIndicatorView.setVisibility(View.GONE);
}
公共类AsyncHttpTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
斯塔塔尼姆();
}
@凌驾
受保护的整数doInBackground(字符串…参数){
整数结果=0;
HttpURLConnection-urlConnection;
试一试{
URL=新URL(参数[0]);
urlConnection=(HttpURLConnection)url.openConnection();
int statusCode=urlConnection.getResponseCode();
//200表示HTTP Ok
如果(状态代码==200){
BufferedReader r=新的BufferedReader(新的InputStreamReader(urlConnection.getInputStream());
StringBuilder响应=新建StringBuilder();
弦线;
而((line=r.readLine())!=null){
响应。追加(行);
}
parseResult(response.toString());
结果=1;//成功
}否则{
结果=0;//“无法获取数据!”;
}
}捕获(例外e){
Log.d(标记,例如getLocalizedMessage());
}
返回结果;//“无法获取数据!”;
}
@凌驾
受保护的void onPostExecute(整数结果){
//下载完成。让我们更新用户界面
stopAnim();
如果(结果==1){
giftListAdapter=新的giftListAdapter(getActivity(),gives);
设置适配器(giftListAdapter);
}否则{
创建(getActivity(),getString(R.string.err\u msg\u no\u internet),
supertoos.Duration.SHORT,Style.getStyle(Style.RED,supertoos.Animations.FLYIN)).show();
}
}
}
私有void parseResult(字符串结果){
试一试{
JSONObject响应=新JSONObject(结果);
JSONArray movies=response.optJSONArray(“movies”);
礼品=新的ArrayList();
对于(int i=0;i
您的片段视图是在
onCreateView
方法中创建的,因为在创建视图的过程中,您没有在
RecyclerView
上设置适配器,所以会出现红色错误行:未连接适配器,跳过布局

尝试将适配器设置为
onCreateView
方法中的
RecyclerView
:传入空的礼品数组:

// Supposing that you declared the gifts arraylist as a member variable
gifts = new ArrayList<>();

giftListAdapter = new GiftListAdapter(getActivity(), gifts);
reyclerView.setAdapter(giftListAdapter);
//假设您将gifts arraylist声明为成员变量
礼品=新的ArrayList();
giftListAdapter=新的giftListAdapter(getActivity(),gives);
设置适配器(giftListAdapter);

我应该在
onCreateView
方法中设置then adapter吗?就是这样。谢谢我还有一个从数据库获取数据并加载到recyclerView的问题。我不想再问另一个问题,因为stackoverflow不喜欢你一天做两次或更多。你有时间帮我解决这个问题吗?@DusanDimitrijevic对不起,我不能,我的老师现在正疯狂地看着我。只要再贴一个问题,SO社区会很有帮助的。