2016-09-26 5 views
0

リサイクルビューの一連のアイテムがあります。クリックリスナーに設定して特定のアイテムの説明ページを開き、データを設定したいjson url。私はすでに説明画面とBeanクラス用のアダプタを作っています。私はレイアウト上でアダプタを設定する方法を知らない。 json urlからの静的コンテンツを表示するための線形レイアウトでアダプタを設定することは可能ですか?recyclerviewのクリックリスナーに設定して静的ページを開き、json URLからコンテンツを取得する方法

私のコードは次のとおりです。

説明活動

private class MakeRequestForGetDescription extends AsyncTask<String, Void, String> { 

    ProgressDialog Pdialog; 
    private String response; 
    private MakeServiceClass makeServiceClass = new MakeServiceClass(); 



    @Override 
    protected void onPreExecute() { 
     Pdialog = new ProgressDialog(getActivity()); 
     Pdialog.setMessage("Please Wait.."); 
     Pdialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     try { 
      HashMap<String, String> parms = new HashMap<String, String>(); 
      response = makeServiceClass.makeServiceConnectionGet(ConstUrl.DESCRP_URLS); 
      Log.e("response ads", response); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
     return response; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(response); 
     if (Pdialog != null) { 

      Pdialog.dismiss(); 
     } 

     if (response != null) { 
      try { 
       JSONObject mainObject = new JSONObject(response); 
       if (mainObject.has("status")) { 
        String Status = mainObject.getString("status"); 
        String img_url = ""; 
        if (Status.equalsIgnoreCase("200")) { 
         if (mainObject.has("img_url")) { 
          img_url = mainObject.getString("img_url"); 
          Log.e("img_url", img_url); 
         } 

         if (mainObject.has("details")) { 
          JSONArray datArray = mainObject.getJSONArray("details"); 
          descriptionBeanArrayList = new ArrayList<>(); 
          if (datArray.length() > 0) { 
           for (int i = 0; i < datArray.length(); i++) { 

            DescriptionBean descriptionBean = new DescriptionBean(); 

            JSONObject internalDataObject = datArray.getJSONObject(i); 

            if (internalDataObject.has("id")) { 

             descriptionBean.setId(internalDataObject.getString("id")); 

            } 
            if (internalDataObject.has("title_en")) { 

             descriptionBean.setTitle_en(internalDataObject.getString("title_en")); 

            } 
            if (internalDataObject.has("ad_description_en")) { 

             descriptionBean.setAd_description_en(internalDataObject.getString("ad_description_en")); 

            } 
            if (internalDataObject.has("price")) { 

             descriptionBean.setPrice(internalDataObject.getString("price")); 
            } 
            if (internalDataObject.has("km_driven")) { 

             descriptionBean.setKm_driven(internalDataObject.getString("km_driven")); 
            } 
            if (internalDataObject.has("image_file")) { 
             descriptionBean.setImage_file("http://" + img_url + internalDataObject.getString("image_file")); 

            } 
            descriptionBeanArrayList.add(descriptionBean); 

           } 
           setAdapterForDescription(); 


          } 
         } 
        } else { 


        } 
       } 

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


     } 
    } 

    private void setAdapterForDescription() { 

     DescriptionAdapter adapter = new DescriptionAdapter(getActivity(), descriptionBeanArrayList); 

    } 
} 

説明アダプタ

public View getView(final int position, View convertView, ViewGroup parent) { 

    final ViewHolder viewHolder; // view lookup cache stored in tag 
    if (convertView == null) { 
     viewHolder = new ViewHolder(); 
     LayoutInflater inflater = LayoutInflater.from(mContext); 
     convertView = inflater.inflate(R.layout.fragment_description, parent,false); 

     viewHolder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle); 
     viewHolder.tvRate = (TextView) convertView.findViewById(R.id.tvRate); 
     viewHolder.tvMiles = (TextView) convertView.findViewById(R.id.tvMiles); 
     viewHolder.et_description = (EditText) convertView.findViewById(R.id.et_description); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    //setdata 
    viewHolder.tvTitle.setText(descriptionBeanArrayList.get(position).getTitle_en()); 
    viewHolder.tvRate.setText(descriptionBeanArrayList.get(position).getPrice()); 
    viewHolder.tvMiles.setText(descriptionBeanArrayList.get(position).getKm_driven()); 
    viewHolder.et_description.setText(descriptionBeanArrayList.get(position).getAd_description_en()); 

    Log.e("s", descriptionBeanArrayList.get(position).getImage_file()); 
    //Glide.with(mContext).load("www.apnikheti.com/upload/buysell/idea99A4.jpg").into(viewHolder.iv_picofproduct); 

    Picasso.with(mContext).load(descriptionBeanArrayList.get(position).getImage_file()).into(viewHolder.iv_picofproduct, new Callback() { 
     @Override 
     public void onSuccess() { 
      Log.e("s", "sucess"); 
     } 

     @Override 
     public void onError() { 
      Log.e("s", "failed"); 

     } 
    }); 
    Picasso.with(mContext).setLoggingEnabled(true); 
    return convertView; 
} 

public class ViewHolder { 
    private TextView tvTitle,tvRate,tvMiles; 
    private EditText et_description; 
    public ImageView iv_picofproduct; 
} 

}

+0

私はあなたのアダプタがベースアダプタだと思います。 'ListView'や' RecyclerView'のためのアダプタを設定していません。 – Piyush

+0

説明adapterは、単純なコンテンツを表示するためのベースアダプタです。 –

+0

RecyclerView.Adapter

答えて

0

これは、URLからデータを取得するために使用され、私のコード(JSONデータであります)、アダプターを使ってrecyclerviewにロードし、同じ値を別のaに渡しますctivity。

MyActivity

public class Video_List extends AppCompatActivity { 
    private RecyclerView recyclerView; 
    private RecyclerView.LayoutManager layoutManager; 
    private RecyclerView.Adapter adapter; 
    //private GridLayoutManager layoutManager; 
    private List<Video_Details> videodetails; 
    public static final String VideoID = "v_id"; 
    public static final String ID = "id"; 
    public static final String Title = "title"; 
    public static final String Thumb = "thumb"; 
    public static final String url = "http://115.115.122.10/paul/api/videos.php?start=1&count=10"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_video__list); 
     getdata(); 
     recyclerView = (RecyclerView) findViewById(R.id.card_recycler_view); 
     recyclerView.setHasFixedSize(true); 
     layoutManager = new LinearLayoutManager(this); 
     //layoutManager = new GridLayoutManager(this,2); 
     recyclerView.setLayoutManager(layoutManager); 
     videodetails = new ArrayList<>(); 



    } 
    private void getdata(){ 
     final ProgressDialog loading = ProgressDialog.show(this,"Loading Data", "Please wait...",false,false); 

     final JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         //Dismissing progress dialog 
         loading.dismiss(); 
         Log.d("count",response.toString()); 
         //calling method to parse json array 
         parseData(response); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 

         loading.dismiss(); 

         Log.d("infoz","777"+error.getMessage()); 

         Toast.makeText(getApplicationContext(),"No data Found",Toast.LENGTH_LONG).show(); 


        } 
       }); 

     //Creating request queue 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 

     //Adding request to the queue 
     requestQueue.add(jsonArrayRequest); 
    } 

    //This method will parse json data 
    private void parseData(JSONArray array){ 

     try { 

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

       JSONObject json = array.getJSONObject(i); 

       Video_Details video = new Video_Details(); 

       if (json.has(VideoID)) { 
        Log.d("has values", json.getString(VideoID)); 
       } 
       video.setId(json.getString(ID)); 
       video.setV_id(json.getString(VideoID)); 
       video.setTitle(json.getString(Title)); 
       video.setThumb(json.getString(VideoID)); 
       videodetails.add(video); 

       if (json.has(VideoID)) 
       { 
        Log.d("Video",VideoID); 
       } 
      } 


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



     //Finally initializing our adapter 
     adapter = new DataAdapter(videodetails, this); 

     //Adding adapter to recyclerview 
     recyclerView.setAdapter(adapter); 



    } 



} 

MyAdapter

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> { 
private Context context; 
List<Video_Details> video; 

public DataAdapter(List<Video_Details> video, Context context) { 
    super(); 
    this.context = context; 
    this.video = video; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.card_row, parent, false); 
    ViewHolder viewHolder = new ViewHolder(v); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(final ViewHolder holder, final int position) { 
    final Video_Details videoDetails = video.get(position); 
    String url; 
    final String VideoID; 

    holder.title.setText(video.get(position).getTitle()); 

    VideoID= video.get(position).getV_id(); 
    url = video.get(position).getThumb(); 

    Glide.with(context) 
      .load(url) 
      .override(150,70) 
      .into(holder.thumb); 
    //viewHolder.thumb.setText(android.get(i).getVer()); 
    // viewHolder.tv_api_level.setText(android.get(i).getApi()); 

    holder.vm.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
             Toast.makeText(v.getContext(), "You Clicked"+video.get(position).getV_id(), Toast.LENGTH_SHORT).show(); 
             Intent intent = new Intent(v.getContext(),Play_Video.class); 
             intent.putExtra("VideoId",(video.get(position).getV_id())); 
             intent.putExtra("Title",(video.get(position).getTitle())); 
             v.getContext().startActivity(intent); 


            } 
           } 

    ); 
} 

@Override 
public int getItemCount() { 
    return video.size(); 
} 




public class ViewHolder extends RecyclerView.ViewHolder{ 
    public TextView title; 
    public ImageView thumb; 
    public String videoid; 
    public View vm; 
    public ViewHolder(View view) { 
     super(view); 
     vm = view; 
     title = (TextView)view.findViewById(R.id.title); 
     thumb = (ImageView) view.findViewById(R.id.thumb); 



     //tv_version = (TextView)view.findViewById(R.id.tv_version); 
     //tv_api_level = (TextView)view.findViewById(R.id.tv_api_level); 

    } 
} 

}

関連する問題