2016-12-16 4 views
-2

をクリックして取得することはできません。だから私は、私はそれを修正することができますどのようにアンドロイド - recyclerview私は..私はURLから取得したデータをrecyclerview項目をクリックして、位置を得るが、私はrecyclerview項目をクリックすることはできませんするためにいくつかのコードを試してみました位置

..項目のユーザーのクリックを取得して活動を切り替えるwan't?

アダプタ

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> { 

    Context context; 
    private static final String TAG = RecyclerViewAdapter.class.getSimpleName(); 

    List<GetDataAdapter> getDataAdapter; 

    ImageLoader imageLoader1; 

    public RecyclerViewAdapter(List<GetDataAdapter> getDataAdapter, Context context) { 

     super(); 
     this.getDataAdapter = getDataAdapter; 
     this.context = context; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_items, parent, false); 

     ViewHolder viewHolder = new ViewHolder(v); 

     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder Viewholder, int position) { 

     GetDataAdapter getDataAdapter1 = getDataAdapter.get(position); 

     imageLoader1 = ServerImageParseAdapter.getInstance(context).getImageLoader(); 

     imageLoader1.get(getDataAdapter1.getImageServerUrl(), 
       ImageLoader.getImageListener(
         Viewholder.networkImageView,//Server Image 
         R.mipmap.ic_launcher,//Before loading server image the default showing image. 
         android.R.drawable.ic_dialog_alert //Error image if requested image dose not found on server. 
       ) 
     ); 

     Viewholder.networkImageView.setImageUrl(getDataAdapter1.getImageServerUrl(), imageLoader1); 

     Viewholder.ImageTitleNameView.setText(getDataAdapter1.getImageTitleName()); 

    } 

    @Override 
    public int getItemCount() { 

     return getDataAdapter.size(); 
    } 

    class ViewHolder extends RecyclerView.ViewHolder{ 

     public TextView ImageTitleNameView; 
     public NetworkImageView networkImageView; 

     public ViewHolder(View itemView) { 

      super(itemView); 

      ImageTitleNameView = (TextView) itemView.findViewById(R.id.textView_item); 

      networkImageView = (NetworkImageView) itemView.findViewById(R.id.VollyNetworkImageView1); 
     } 
    } 
} 

とあなたのアイテムビューにonClickListenerを設定する必要がmainactivity

public class MainActivity extends AppCompatActivity { 

    List<GetDataAdapter> GetDataAdapter1; 

    RecyclerView recyclerView; 

    RecyclerView.LayoutManager recyclerViewlayoutManager; 

    RecyclerView.Adapter recyclerViewadapter; 

    String GET_JSON_DATA_HTTP_URL = "http://androidblog.esy.es/ImageJsonData.php"; 
    String JSON_IMAGE_TITLE_NAME = "image_title"; 
    String JSON_IMAGE_URL = "image_url"; 

    JsonArrayRequest jsonArrayRequest ; 

    RequestQueue requestQueue ; 

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

     setContentView(R.layout.activity_main); 

     GetDataAdapter1 = new ArrayList<>(); 

     recyclerView = (RecyclerView) findViewById(R.id.recyclerview1); 

     recyclerView.setHasFixedSize(true); 

     recyclerViewlayoutManager = new LinearLayoutManager(this); 

     recyclerView.setLayoutManager(recyclerViewlayoutManager); 


       JSON_DATA_WEB_CALL(); 


    } 

    public void JSON_DATA_WEB_CALL(){ 

     jsonArrayRequest = new JsonArrayRequest(GET_JSON_DATA_HTTP_URL, 

       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 

         JSON_PARSE_DATA_AFTER_WEBCALL(response); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 

        } 
       }); 

     requestQueue = Volley.newRequestQueue(this); 

     requestQueue.add(jsonArrayRequest); 
    } 

    public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){ 

     for(int i = 0; i<array.length(); i++) { 

      GetDataAdapter GetDataAdapter2 = new GetDataAdapter(); 

      JSONObject json = null; 
      try { 

       json = array.getJSONObject(i); 

       GetDataAdapter2.setImageTitleNamee(json.getString(JSON_IMAGE_TITLE_NAME)); 

       GetDataAdapter2.setImageServerUrl(json.getString(JSON_IMAGE_URL)); 

      } catch (JSONException e) { 

       e.printStackTrace(); 
      } 
      GetDataAdapter1.add(GetDataAdapter2); 
     } 

     recyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1, this); 

     recyclerView.setAdapter(recyclerViewadapter); 
    } 
} 

getdataadapter

public class GetDataAdapter { 

    public String ImageServerUrl; 
    public String ImageTitleName; 

    public String getImageServerUrl() { 
     return ImageServerUrl; 
    } 

    public void setImageServerUrl(String imageServerUrl) { 
     this.ImageServerUrl = imageServerUrl; 
    } 

    public String getImageTitleName() { 
     return ImageTitleName; 
    } 

    public void setImageTitleNamee(String Imagetitlename) { 
     this.ImageTitleName = Imagetitlename; 
    } 


} 
+0

のようなあなたのオブジェクトを受け取ります!あなたのアダプタの 'holder.itemView'を呼び出すことによって項目ビューを取得してください! – AndiGeeky

答えて

1

あなたのリサイクルのアイテムビュー上でリスナーを入れた後、onclickの中で、新しいアクティビティを開くために意図を開始します。インテントと共に渡すデータオブジェクトを渡します。

//あなたのStartted活動に、あなたのモデルクラスGetDataAdapterがParcelable

holder.itemView.setOnclickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent intent = new Intent(this, ActivityToOpen.class); 
      intent.putExtra("key",Your Object to pass);// getDataAdapter1 in your case 
      context.startActivity(intent); 
     } 
    }); 

を実装してくださいあなたは、あなたのアイテムビューに `onClickListener`を設定する必要があり、この

YourObject obj = getIntent().getParcelableExtra("key"); 
//Your case 
GetDataAdapter obj = getIntent().getParcelableExtra("key"); 
+0

私は既にgetdataadapterを更新しています。それはどうですか? –

+0

あなたはアイテムをクリック上のアクティビティを開いて、その活動の右にクリックしたオブジェクトを渡したいですか?この –

+0

右はい...... –

1

ため、このコードは、このコード。

設定onCLickListenerあなたのリスト項目のルートビューに:あなたは、手順の下に、次により行うことができます。

View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_items, parent, false); 

onCreateViewHolderにコードの下に追加します。

v.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
     // Add your logic here 
      } 
     }); 

あなたはonBindViewHolderながらリスナーを追加することができます。

holder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
     // Add your logic here 
      } 
     }); 

感謝を。

+0

どこにコードを置くことができますか? –