2014-06-11 4 views
0

목록보기 용 사용자 지정 어댑터를 만들어야하지만 어떻게 할 수 있는지 이해할 수 없습니다. 실제로 그것은 내 작품을하지만 목록에 대한 기본 안드로이드 레이아웃 내부의 모든 개체와 함께 단순히 listview를 사용합니다. custom adapter을 생성하는 객체를 "분리"해야합니다.간단한 목록보기 코드에서 사용자 지정 어댑터 만들기

private static class SoluzioniLoader extends AsyncTaskLoader<List<Soluzione>> { 

    private FermataComune partenza; 
    private FermataComune arrivo; 
    private String data; 

    public SoluzioniLoader(Context context, FermataComune partenza, FermataComune arrivo, String data) { 
     super(context); 
     this.partenza = partenza; 
     this.arrivo = arrivo; 
     this.data = data; 
    } 

    @Override 
    public List<Soluzione> loadInBackground() { 

    try { 

     List<Soluzione> soluzioni = Client.cercaCorseAndata(partenza, arrivo, data); 
     return soluzioni; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } 

    } 
} 

private LoaderCallbacks<List<Soluzione>> mLoaderCallbacks = new LoaderCallbacks<List<Soluzione>>() { 
    private ProgressDialog pd; 
    @Override 
    public Loader<List<Soluzione>> onCreateLoader(int id, Bundle args) { 
    pd = new ProgressDialog(SoluzioniActivity.this); 
    pd.setTitle("Caricamento Soluzioni Trovate"); 
    pd.setMessage("Attendi..."); 
    pd.setIndeterminate(false); 
    pd.show(); 

    return new SoluzioniLoader(SoluzioniActivity.this, partenza, arrivo, data); 
} 

@Override 
public void onLoadFinished(Loader<List<Soluzione>> loader, List<Soluzione> data) { 
    try { 
    pd.dismiss(); 
    } catch(Exception e){ 
    } 

    if (data == null) { 
    // ERRORE 
    } else { 
    mListView.setAdapter(new ArrayAdapter<Soluzione>(SoluzioniActivity.this, android.r.layout.simple_list_item_1, data)); 
} 

가 이미 행

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
> 


    <TextView 
    android:id="@+id/fromhour" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="30sp" 
    /> 

    <TextView 
    android:id="@+id/from" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="20sp" 
    /> 

    <TextView 
    android:id="@+id/tohour" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="20sp" 
    /> 

    <TextView 
    android:id="@+id/to" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="20sp" 
    /> 

</LinearLayout> 

내가 만들고 여기에 사용자 정의 어댑터를 통합 할 수있는 방법 어떤 도움 레이아웃을 만든이 실제 코드는? 코드 아래에 감사

답변

0

시도 :

// 사용자 정의 어댑터 선언에서 onCreate에서

private EfficientAdapter adapter; 

를() 초기화 :

adapter = new EfficientAdapter(this); 

그런 다음 목록 어댑터를 설정,

your_listview.setAdapter(adapter); 

// Y 우리의 어댑터 코드 : 난 내에서 코드를 통합하는 방법 :(은 완벽 것을 이해하는 것이 필요 내가 당신으로하지만 올바른 textviews와 함께 어댑터를 만들 필요는 answer..So 주셔서 감사합니다

private class EfficientAdapter extends BaseAdapter { 

     private LayoutInflater mInflater; 
     private Context context; 
     private Bitmap imageBitmap = null; 

     public EfficientAdapter(Context context) { 
      mInflater = LayoutInflater.from(context); 
      this.context = context; 
     } 

     @Override 
     public int getCount() { 
      return YOUR_ARRAY.size(); 
     } 

     @Override 
     public Object getItem(int arg0) { 
      return null; 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

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

      final ViewHolder holder; 

      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.featured_item, null); 
       holder = new ViewHolder(); 
       holder.txtTitle = (TextView) convertView.findViewById(R.id.txtTitle); 
       holder.txtAuthorName = (TextView) convertView.findViewById(R.id.txtAuthorName); 
       holder.txtDescription = (TextView) convertView.findViewById(R.id.txtDescription); 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 

      holder.txtTitle.setText(data.get(position).get("article_title")); 
      holder.txtAuthorName.setText(data.get(position).get("author_name")); 
      holder.txtDescription.setText(data.get(position).get("article_text")); 

      return convertView; 
     } 

     class ViewHolder { 
//YOUR ATTRUBUTES TO DISPLAY IN LIST DECLARE HERE 
      TextView txtTitle; 
      TextView txtAuthorName; 
      TextView txtDescription; 
     } 

    } 
+0

? 내 안에 내가있다 :'this.partenza = partenza; this.arrivo = arrivo; this.data = data;'이건 내 객체입니다 .. 내가 게시 한 코드는 ... 내가 다시 작성해야합니까? –

+0

하나의 arraylist 또는 데이터 배열을 만든 다음 텍스트 뷰에서 값을 바꿀 값으로 바꾸고 texuviews를 사용하십시오. 그 답을 수락하고 upvote하십시오. –

+0

나는 노력하고있다. 내가 올바르게 할 것인지 알려줄 것이다 : D –

관련 문제