2015-06-13 3 views
2

Android ListView]ListView должен отображать первые 10 результатов, а затем он должен отображать параметр «LoadMore», когда я нажимаю «LoadMore option», тогда listview будет отображать еще 10 результатов и снова параметр «LoadMore» должен отображаться. Как это сделать.Загрузить еще один вариант в ListView Android

XML

<ListView 
     android:id="@+id/subCategory" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="5" 
     android:cacheColorHint="@android:color/transparent" 
     android:divider="#fff" 
     android:dividerHeight="1dp" 
     android:fadingEdge="none"> 
</ListView> 

AdapterClass

public class ListAdapter extends BaseAdapter { 

    private ArrayList<String> mData = new ArrayList<String>(); 
    private LayoutInflater  mInflater; 

    public MobileListAdapter(Activity activity) { 
     mInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public void addItem(String item) { 
     mData.add(item); 
     notifyDataSetChanged(); 
    } 

    public int getCount() { 
     return mData.size(); 
    } 

    public String getItem(int position) { 
     return mData.get(position); 
    } 

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

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder = null; 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = mInflater.inflate(R.layout.mobile_page, parent, false); 
      holder.textView = (TextView) convertView.findViewById(R.id.text); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     String str = mData.get(position); 
     holder.textView.setText(str); 
     return convertView; 
    } 

    public class ViewHolder { 
     public TextView textView; 
    } 

} 

ActivityClass

public void setData() { 
    mobileList = new ArrayList<String>(); 
    mAdapter = new ListAdapter(this); 
    for (int i = 0; i < str.length; i++) { 
     mAdapter.addItem(str[i]); 
     mobileList.add(str[i]); 
    } 
    Button btnLoadMore = new Button(this); 
    btnLoadMore.setText("Load More"); 
    lv.addFooterView(btnLoadMore); 
    lv.setAdapter(mAdapter); 
    btnLoadMore.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      // Starting a new async task 
      //new loadMoreListView().execute(); 
     } 
    }); 

Что еще я должен сделать в этом, чтобы показать возможность loadmore

ответ

1

Добавить FooterView для ListView следующим

lv.addFooterView(footerView); 

Возьмите кнопку в footerView и писать OnClick() для загрузки оставшихся элементов.

UPDATE:

Вы хранение данных в ArrayList, но вы не используете в любом месте, просто написать следующее OnClick()

for (int i = 0; i < str.length; i++) { 
    mAdapter.addItem(str[i]); 
} 

Надеется, что это поможет.

+0

я уже, что часть сомнения является то, что У меня есть данные после 10 записей. Я хочу установить еще 10 записей в списке. –

+0

@PoojaDubey. Если вы загрузите еще 10 записей, кнопка автоматически переместится в 21 позицию ListView. –

+0

, поэтому я смущен тем, что должен сделать для этого –

0

Просто используйте этот код ... Я отредактированный код ... основанный на ваш вопрос ..

public class ListAdapter extends BaseAdapter { 

    private ArrayList<String> mData;// = new ArrayList<String>(); 
    private LayoutInflater  mInflater; 

    public ListAdapter(Context context,ArrayList<String> data) { 
     mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     mData=data; 
    } 

    public void addItem(String item) { 
     mData.add(item); 
     notifyDataSetChanged(); 
    } 

    public int getCount() { 
     return mData.size(); 
    } 

    public String getItem(int position) { 
     return mData.get(position); 
    } 

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

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder = null; 
     View row=convertView; 

     if (row == null) { 
      row=mInflater.inflate(R.layout.mobile_page, parent, false); 
      holder=new ViewHolder(row); 
      row.setTag(holder); 
     } else { 
      holder = (ViewHolder) row.getTag(); 
     } 

     holder.textView.setText(mData.get(position).toString()); 
     return row; 
    } 

    public class ViewHolder { 
     public TextView textView; 

     public ViewHolder(View v) { 
      textView=(TextView)v.findViewById(R.id.text); 
     } 
    } 

} 


package com.example.androidexam; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

    String str[]={"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20", 
      "21","22","23","24","25","26","27","28","29"}; 
    ListAdapter mAdapter; 
    ArrayList<String> mobileList; 
    int index=0; 
    ListView lv; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     lv=(ListView)findViewById(R.id.subCategory); 

     setData(); 

    } 
    public void setData() { 

     mobileList = new ArrayList<String>(); 


     if(str.length<=10) 
     { 
      for (int i = 0; i < str.length; i++) { 
       /* mAdapter.addItem(str[i]);*/ 
       mobileList.add(str[i]); 
      } 
     }else 
     { 
      for (int i = 0; i <10; i++) { 
        /* mAdapter.addItem(str[i]);*/ 
        mobileList.add(str[i]); 
        index=i; 
       } 
     } 


     mAdapter=new ListAdapter(this, mobileList); 
     Button btnLoadMore = new Button(this); 
     btnLoadMore.setText("Load More"); 
     lv.setAdapter(mAdapter); 
     lv.addFooterView(btnLoadMore); 


     btnLoadMore.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 

        for (int i = index+1; i < str.length; i++) { 
          /* mAdapter.addItem(str[i]);*/ 
          mobileList.add(str[i]); 

          index=i; 

          if((i+1)%10==0) 
           break; 
         } 

        mAdapter=new ListAdapter(MainActivity.this, mobileList); 
        lv.setAdapter(mAdapter); 

      } 
     }); 
    } 
} 
Смежные вопросы