2015-11-24 52 views
1

中的另一個活動中使用任何其他佈局的組件(除setContentView()中定義的)我正在處理一個應用程序,在該應用程序中我需要在listview中爲我創建的一些數據一個與包含listview的佈局相關的活動,用於創建自定義listitem的listview。現在我需要從活動中的自定義列表項訪問組件(Imageview)。任何人都可以請告訴我如何實現這一目標?我如何在android

這是活動

package com.example.manishnegi.sharemyride; 


public class RideMatched extends Activity { 
int commentCount  = 0; 
private List<GetRidesSummaryDetails> oslist = new ArrayList<GetRidesSummaryDetails>(); 
ListView rides_matchedListview; 
ImageView hrate1,hrate2,hrate3,hrate4,hrate5; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.ride_matched); 
    hrate1=(ImageView)findViewById(R.id.hrate1); 
    hrate2=(ImageView)findViewById(R.id.hrate2); 
    hrate3=(ImageView)findViewById(R.id.hrate3); 
    hrate4=(ImageView)findViewById(R.id.hrate4); 
    hrate5=(ImageView)findViewById(R.id.hrate5); 
    int l=0; 
    String arr; 
    JSONArray array=new JSONArray(); 
    Bundle b=getIntent().getExtras(); 
    if(b!=null) 
    { 
    l=b.getInt("array_length"); 
     arr=b.getString("rides_array"); 
     try { 
      array=new JSONArray(arr); 
      Log.e("String to array ",array.toString()); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      Log.e("String to array",e.getMessage()); 

     } 

     Log.e("Number of matched",l+""); 
    } 
    rides_matchedListview = (ListView)findViewById(R.id.rides_matchedListview); 
    Second scnd = new Second(); 
    List<GetRidesSummaryDetails> detailsofrides = scnd.getallcomments(l,array); 
    for (GetRidesSummaryDetails values :detailsofrides){ 
     String driver_imageget = values.getDriverimage(); 
     String driver_nameget = values.getDrivername(); 
     String pickup_get = values.getPickuptime(); 
     String ride_idget= values.getRideId(); 
     String rating_get = values.getRating(); 
     String vehicle_imageget = values.getVehicleImage(); 

     GetRidesSummaryDetails vehi = new GetRidesSummaryDetails(); 
     vehi.setDriverimage(driver_imageget); 
     vehi.setDrivername(driver_nameget); 
     vehi.setPickuptime(pickup_get); 
     vehi.setRideId(ride_idget); 
     vehi.setRating(rating_get); 
     setRating(Integer.parseInt(rating_get)); 
     vehi.setVehicleImage(vehicle_imageget); 
     oslist.add(vehi); 
     commentCount++; 
     rides_matchedListview.setAdapter(new RidesMatchedAdapter(RideMatched.this, 0, oslist)); 
     new RidesMatchedAdapter(RideMatched.this ,0, oslist).notifyDataSetChanged(); 

    } 
} 

public void setRating(int rate) 
{ 
    if (rate == 1) { 
     hrate1.setImageResource(R.drawable.star); 


    } 

    if (rate == 2) { 
     hrate1.setImageResource(R.drawable.star); 
     hrate2.setImageResource(R.drawable.star); 

    } 

    if (rate == 3) { 
     hrate1.setImageResource(R.drawable.star); 
     hrate2.setImageResource(R.drawable.star); 
     hrate3.setImageResource(R.drawable.star); 

    } 

    if (rate == 4) { 
     hrate1.setImageResource(R.drawable.star); 
     hrate2.setImageResource(R.drawable.star); 
     hrate3.setImageResource(R.drawable.star); 
     hrate4.setImageResource(R.drawable.star); 

    } 

    if (rate == 5) { 
     hrate1.setImageResource(R.drawable.star); 
     hrate2.setImageResource(R.drawable.star); 
     hrate3.setImageResource(R.drawable.star); 
     hrate4.setImageResource(R.drawable.star); 
     hrate5.setImageResource(R.drawable.star); 

    } 

} 
} 

這是列表視圖佈局(ride_matched.xml)

I've set this layout in my activity

這是自定義列表項

I want to imageview of this layout in my activity

+2

你可以請你發佈你的代碼? –

+0

當你點擊它時你想訪問那個子視圖(列表項)嗎? –

+0

我已經添加了所需的代碼和圖像,現在可以請你幫忙 – Brucode

回答

1

您必須爲該列表視圖創建適配器,然後使用該適配器在viewHolder中聲明應該工作的圖像。

+1

Thanx它的工作:) – Brucode

+1

不客氣:) – ManishNegi

0

使用任何適配器(根據你的需要)在ListView中擴充數據。在適配器本身中,您可以訪問自定義listitem的組件。 您無法訪問活動內部自定義listitem的組件。它們只能在充氣ListView中的數據的適配器內訪問。

0

我們需要將適配器傳遞給listview。適配器包含要在列表中顯示的模型對象列表。您可以創建一個擴展基本適配器的自定義適配器。你可以按照下面的教程 http://androidexample.com/How_To_Create_A_Custom_Listview_-_Android_Example/index.php?view=article_discription&aid=67&aaid=92

P [AY注意getView方法在適配器和下面的行獲得視圖 VI = inflater.inflate(R.layout的改變佈局的名字按你自定義佈局。 tabitem,null);

創建一個持有人類,其中包含需要在列表中顯示的所有查看項目。 您不需要訪問活動中的圖像視圖,因爲它可以在每個行迭代的getView方法中訪問。