0

私はRecyclerViewAdapterを使用しています。それは完全に機能しています。RecyclerViewAdapterのデータを更新できませんでした

サーバーからリストを作成しようとしているときに問題が発生します。

マイDataHandalingクラス、私はビュー

NOTEをリフレッシュするために、ここでメソッドを持っています

void getEvents() { 
    OkHttpClient client = new OkHttpClient(); 

    Request request = new Request.Builder() 
      .url(enviroClass.url() + "/api/events/" + 7) 
      .build(); 

    client.newCall(request) 
      .enqueue(new Callback() { 
       @Override 
       public void onFailure(Call call, IOException e) { 

       } 

       @Override 
       public void onResponse(Call call, Response response) throws IOException { 
        try { 
         JSONObject eventObject = new JSONObject(response.body().string()); 
         JSONArray eventJsonArray = eventObject.getJSONArray("events"); 
         System.out.println(eventJsonArray.length()); 
         for (int i = 0; i<2; i++) { 
          eventObject = eventJsonArray.getJSONObject(i); 
          eventObject = eventObject.getJSONObject("event"); 
          eventArray.add(new Object_Event(eventObject.getString("name"), eventObject.getString("address"), eventObject.getString("image"), "100" ,eventObject.getString("start_date"), eventObject.getString("end_date"), eventObject.getInt("id"))); 
         } 
         System.out.println("This is from the http request in the datahandeling class" + "\n" + eventArray.get(0).getName()); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
} 

Adapter Class ...ここからリストビューをリフレッシュする配列を取得しようとしています :私はそれを試すことができないため、スワップメソッドが動作するかどうかは分かりません。)

Fragmentクラス

は(NOTE:それは最初にリストビューを移入んので、これが正しく行われるべき)

import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.widget.GridLayoutManager; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import com.app.garethbecker.socializer.dummy.DummyContent; 
import com.app.garethbecker.socializer.dummy.DummyContent.DummyItem; 

import org.w3c.dom.Text; 

import java.util.ArrayList; 

import static android.R.attr.data; 

/** 
* A fragment representing a list of Items. 
* <p/> 
* Activities containing this fragment MUST implement the {@link OnListFragmentInteractionListener} 
* interface. 
*/ 
public class EventListFragment extends Fragment { 

    DataHandaling dh = new DataHandaling(); 


    // TODO: Customize parameter argument names 
    private static final String ARG_COLUMN_COUNT = "column-count"; 
    // TODO: Customize parameters 
    private int mColumnCount = 1; 
    private OnListFragmentInteractionListener mListener; 

    /** 
    * Mandatory empty constructor for the fragment manager to instantiate the 
    * fragment (e.g. upon screen orientation changes). 
    */ 
    public EventListFragment() { 
    } 

    // TODO: Customize parameter initialization 
    @SuppressWarnings("unused") 
    public static EventListFragment newInstance(int columnCount) { 
     EventListFragment fragment = new EventListFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(ARG_COLUMN_COUNT, columnCount); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (getArguments() != null) { 
      mColumnCount = getArguments().getInt(ARG_COLUMN_COUNT); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_item_list, container, false); 

     // Set the adapter 
     if (view instanceof RecyclerView) { 
      Context context = view.getContext(); 
      RecyclerView recyclerView = (RecyclerView) view; 
      if (mColumnCount <= 1) { 
       recyclerView.setLayoutManager(new LinearLayoutManager(context)); 
      } else { 
       recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); 
      } 
      recyclerView.setAdapter(new MyItemRecyclerViewAdapter(dh.getEventArray(), mListener)); 
     } 
     return view; 
    } 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof OnListFragmentInteractionListener) { 
      mListener = (OnListFragmentInteractionListener) context; 
     } else { 
      throw new RuntimeException(context.toString() 
        + " must implement OnListFragmentInteractionListener"); 
     } 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 

    /** 
    * This interface must be implemented by activities that contain this 
    * fragment to allow an interaction in this fragment to be communicated 
    * to the activity and potentially other fragments contained in that 
    * activity. 
    * <p/> 
    * See the Android Training lesson <a href= 
    * "http://developer.android.com/training/basics/fragments/communicating.html" 
    * >Communicating with Other Fragments</a> for more information. 
    */ 
    public interface OnListFragmentInteractionListener { 
     // TODO: Update argument type and name 
     void onListFragmentInteraction(int item); 
    } 

私は(リフレッシュリスト)にしてみてください、私は失敗していますserver.whereからフェッチデータをリフレッシュ悲惨に。

誰でも手伝ってもらえますか?ありがとう。

答えて

0
[OK]を

、だから私は、私が間違って何をしていたかが分かった...

は、私は(私は名前を変更する必要があります)MyItemRecyclerViewAdapterのコンストラクタを変更しました。

public MyItemRecyclerViewAdapter(List<Object_Event> items, OnListFragmentInteractionListener listener) { 
    if (items != null) { 
     mValues = items; 
    } 
    if (listener != null) { 
     mListener = listener; 
    } 
} 

は、その後、私は任意の難易度

MyItemRecyclerViewAdapter adapter = new MyItemRecyclerViewAdapter(null, null); 
adapter.swap(eventArray); 
0

変更を通知する必要があります。それは彼らがnullであるかどうかを確認するための値をチェックするように

MyItemRecyclerViewAdapter.notifyDataSetChanged(); 
+0

せずにスワップメソッドを呼び出した私は、スワップ方法でそれをした、しかし、私はデータhadalingからそれを呼び出す方法を見当がつかない??? – TheMysticalWarrior

関連する問題