2016-08-09 26 views
0

私はそれを下にスクロールするときにリストビューを含む主なアクティビティを持っています。リクエストをサーバーに送り、リストビューでアイテムをさらにフェッチします。サーバーサーバー上にアイテムがない場合は、 moreフッターなどのビューには、いくつかのアイテムを含むリストビューが1つ含まれています。どのように行うことができますか。アダプタのアンドロイドのListviewで2つの異なるビューを表示するにはどうすればいいですか?

コード: -

private final Context m_Context;// declaring context variable 
    private final ArrayList<CDealAppDatastorage> s_oDataset;// declaring array list ariable 

    public CDealAppListingAdapter(Context m_Context, ArrayList<CDealAppDatastorage> mDataList) { 
     this.m_Context = m_Context; 
     s_oDataset = mDataList; 
    } 

    @Override 
    public int getCount() {// get total arraylist size 
     return s_oDataset.size(); 
    } 

    @Override 
    public Object getItem(int position) {// get item position in array list 
     return s_oDataset.get(position); 
    } 

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

    @SuppressWarnings("deprecation") 
    @SuppressLint({"SetTextI18n", "InflateParams"}) 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     final ViewHolder viewHolder; 
     if (convertView == null) { 
      viewHolder = new ViewHolder(); 
      convertView = inflater.inflate(R.layout.deallisting_card_view, null); 
      viewHolder.m_Header = (TextView) convertView.findViewById(R.id.headingText); 
      viewHolder.m_Subheader = (TextView) convertView.findViewById(R.id.subHeaderText); 
      viewHolder.m_DummyText = (TextView) convertView.findViewById(R.id.subHeadingText); 
      viewHolder.m_logoImage = (ImageView) convertView.findViewById(R.id.appImage); 
      viewHolder.m_getBtn = (Button) convertView.findViewById(R.id.getDealBtn); 
      convertView.setTag(viewHolder); 

     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 
     viewHolder.m_getBtn.setOnClickListener(new View.OnClickListener() {// onclick getDeal Btn 
      @Override 
      public void onClick(View v) {//send to deal detail page onclick getDeal Btn 
       Intent i = new Intent(v.getContext(), CDealAppListingDetails.class); 
       i.putExtra("DealCode", s_oDataset.get(position).getM_szsubHeaderText());// get deal code from deal data storage 
       i.putExtra("headerText", s_oDataset.get(position).getM_szHeaderText());// get deal name from deal dta storage 
       v.getContext().startActivity(i); 
      } 
     }); 
     CDealAppDatastorage m = s_oDataset.get(position); 
     viewHolder.m_Header.setText(m.getM_szHeaderText()); 
     viewHolder.m_Subheader.setText(m.getM_szsubHeaderText()); 
     viewHolder.m_getBtn.setText("GET " + m.getM_szDealValue() + " POINTS");// set deal button text 
     viewHolder.m_logoImage.setImageResource(m.getM_n_Image());// set deal logo 

     String source = "Dummy text is text that is used in the publishing industry or by web designers to occupy space."; 
     viewHolder.m_DummyText.setText(Html.fromHtml(source)); 



     return convertView; 
    } 

    private class ViewHolder { 
     public TextView m_Header, m_Subheader, m_DummyText; 
     public ImageView m_logoImage; 
     public Button m_getBtn; 
    } 
} 

答えて

1

ここであなたは(GetViewメソッドで)ビューを膨張させるためのコードを持っている:

convertView = inflater.inflate(R.layout.deallisting_card_view, null); 

ちょうどif文一部を追加し、異なる要素

のためのさまざまなビューを膨らませます
if (someExpression) 
convertView = inflater.inflate(R.layout.view1, null); 
else 
convertView = inflater.inflate(R.layout.view2, null); 
0

getViewTypeメソッドをAdapterでオーバーライドしてからgetView()で型を取得し、inflあなたが望む意見を食べた。道による

switch(getViewType()){ 

    case value: 

    convertView = inflater.inflate(R.layout.deallisting_card_view, parent,false); 

    break; 

    case value: 

    break; 
} 

は、あなたがアイテムを膨らませるとき、あなたはより良い親を追加したい、ヌルとしてそれをしないでください。

convertView = inflater.inflate(R.layout.deallisting_card_view, parent,false); 

convertView = inflater.inflate(R.layout.deallisting_card_view, null); 

の変化は、それが

に役立つだろう願っています
関連する問題