0

私のアプリケーションでは、jsonオブジェクトを解析して、recyclerviewに関連情報を表示しようとしています。 gsonライブラリを使用してオブジェクトの逆シリアル化を行いました。今度は、各項目をクリックすると、リストの詳細情報が表示されます。このためには、setOnItemClickListenerをrecyclerViewに実装してください。私はなぜこのメッセージを受け取っていません。エラー:(102、29)エラー:シンボルメソッドsetOnItemClickListener()を見つけることができません。ここに私のメインアクティビティの完全なコードがありますsetOnItemClickListenerメソッドでエラーを取得するandroid

import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.Toast; 

import com.google.gson.Gson; 
import com.testgrid.MainActivity; 
import com.testgrid.R; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 


public class MyColleaguesPage extends AppCompatActivity { 

private RecyclerView recyclerView; 
private RecyclerView.Adapter adapter; 
private List<MyColleageModel> colleagueObject; 
InputStream is; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mycolleagues_layout); 
    recyclerView = (RecyclerView) findViewById(R.id.colleagues_recycler); 
    recyclerView.setHasFixedSize(true); 
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(MyColleaguesPage.this); 
    recyclerView.setLayoutManager(layoutManager); 
    new JSONTask().execute(); 
    } 

    public class JSONTask extends AsyncTask<String, String, List<MyColleageModel>> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected List<MyColleageModel> doInBackground(String... params) { 

     colleagueObject = new ArrayList<MyColleageModel>(); 

     try { 

      JSONObject parentObject = new JSONObject(loadJSONFromAsset()); 
      JSONArray parentArray = parentObject.getJSONArray("contacts"); 
      Gson gson = new Gson(); 
      for (int i = 0; i < parentArray.length(); i++) { 
       JSONObject finalObject = parentArray.getJSONObject(i); 
       MyColleageModel model = gson.fromJson(finalObject.toString(), MyColleageModel.class); 


       colleagueObject.add(model); 

      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 


    @Override 
    protected void onPostExecute(final List<MyColleageModel> result) { 
     super.onPostExecute(result); 
     if (result != null) { 
      adapter = new MyColleaguesAdapter(colleagueObject, getApplicationContext()); 
      recyclerView.setAdapter(adapter); 
      //Problem in this setOnItemClickListener 
      recyclerView.setOnItemClickListener(new AdapterView.OnItemClickListener() { //problem in this line 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        MyColleageModel myColleageModel=result.get(position); 
        Intent intent = new Intent(MyColleaguesPage.this, DetailMyColleague.class); 
        intent.putExtra("contacts", new Gson().toJson(myColleageModel)); 
        startActivity(intent); 
       } 
      }); 
     } else { 
      Toast.makeText(getApplicationContext(), "Not able to fetch data from server", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

    private String loadJSONFromAsset() { 
     String json = null; 
     try { 

      ................ 
     return json; 

    } 
} 

答えて

0

リサイクルビューにはsetOnItemClickListenerを使用しないでください。代わりに、addOnItemTouchListenerを使用してください。参考になるように、RecyclerView.OnItemTouchListenerを実装する新しいクラスを作成する必要があります。thisを参照してください。

+0

これは私のコードでどのように実装できますか?私は開発中のナドトロイドでは非常に新しいです。あなたはplaeseがここにそれを実装する方法を説明することができます –

+0

[this](https://tutorialwing.com/android-recyclerview-tutorial-example/)ブログのセクション2.2と2.3をチェックできます。 –

関連する問題