0

Dans mon application, j'essaie d'analyser l'objet json pour afficher les informations connexes dans recyclerview. J'ai implanté la désérialisation d'objet en utilisant gson Library. Maintenant, je veux cliquer sur chacun des éléments pour afficher les détails de la liste. pour cela essayez d'implémenter setOnItemClicklistener à recyclerView. mais je ne sais pas pourquoi je reçois ce message Erreur: (102, 29) erreur: ne peut pas trouver la méthode de symbole setOnItemClickListener(). Voici mon code complet de l'activité principaleObtenir une erreur sur la méthode 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; 

    } 
} 

Répondre

0

Vous ne devriez pas utiliser setOnItemClickListener sur un recyclerView. Au lieu de cela, utilisez addOnItemTouchListener. Vous devez créer une nouvelle classe implémentant RecyclerView.OnItemTouchListener. Voir this pour référence.

+0

Comment l'implémenter dans mon code. Je suis très nouveau dans le développement de nadroid. pourriez-vous expliquer comment je peux l'implémenter ici –

+0

Vous pouvez vérifier la section 2.2 & 2.3 dans [ce] blog (https://tutorialwing.com/android-recyclerview-tutorial-example/) blog. –