Android 中的列表视图分页

2024-05-18

我有一个列表视图,其中显示了 50 个元素。我决定对视图进行分页,以便视图的每个部分都有 10 个元素,然后单击“下一个”按钮以获取下一个 10 个元素。如何设置10个数据?我关注这篇文章http://rakhi577.wordpress.com/2013/05/20/listview-pagination-ex-2/ http://rakhi577.wordpress.com/2013/05/20/listview-pagination-ex-2/这是我的代码。您可以帮助我编写代码或提供有关如何正确实现此代码的指南的链接吗?

public class MainActivity extends ListActivity {


Context context;
Button btnSearch ;
EditText txtSearch;

private ProgressDialog pDialog;

// URL to get contacts JSON

    public int TOTAL_LIST_ITEMS = 50;
    public int NUM_ITEMS_PAGE   = 10;
    private int noOfBtns;
    private Button[] btns;


// JSON Node names
private static final String TAG_CONTACTS = "contacts";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
private static final String TAG_ADDRESS = "address";
private static final String TAG_GENDER = "gender";
private static final String TAG_PHONE = "phone";
private static final String TAG_PHONE_MOBILE = "mobile";
private static final String TAG_PHONE_HOME = "home";
private static final String TAG_PHONE_OFFICE = "office";

// contacts JSONArray
JSONArray contacts = null;

// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnSearch=(Button)findViewById(R.id.buttonSearch);
    txtSearch=(EditText)findViewById(R.id.Searchtext);




}

public String gotourl()
{


    final  EditText txtSearch=(EditText)findViewById(R.id.Searchtext);

     String ts=txtSearch.getText().toString();

     String url = "http://latest.bloomapi.com/api/search?limit=50&offset=0&key1=last_name&op1=eq&value1="+ts;

    return url ;
}

public void Searchfunction(View v)

{
    Btnfooter();
    //loadList(0);
    CheckBtnBackGroud(0);
    contactList = new ArrayList<HashMap<String, String>>();

    ListView lv = getListView();




    // Listview on item click listener
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {



            // getting values from selected ListItem
            String name = ((TextView) view.findViewById(R.id.name))
                    .getText().toString();
            String cost = ((TextView) view.findViewById(R.id.email))
                    .getText().toString();
            String description = ((TextView) view.findViewById(R.id.mobile))
                    .getText().toString();

            // Starting single contact activity
            Intent in = new Intent(getApplicationContext(),
                    SingleContactActivity.class);
            in.putExtra(TAG_NAME, name);
            in.putExtra(TAG_EMAIL, cost);
            in.putExtra(TAG_PHONE_MOBILE, description);
            startActivity(in);

        }
    });

    // Calling async task to get json
    new GetContacts().execute();    
}
private void Btnfooter()
{
    int val = TOTAL_LIST_ITEMS%NUM_ITEMS_PAGE;
    val = val==0?0:1;
    noOfBtns=TOTAL_LIST_ITEMS/NUM_ITEMS_PAGE+val;

    LinearLayout ll = (LinearLayout)findViewById(R.id.btnLay);

    btns    =new Button[noOfBtns];

    for(int i=0;i<noOfBtns;i++)
    {
        btns[i] =   new Button(this);
        btns[i].setBackgroundColor(getResources().getColor(android.R.color.transparent));
        btns[i].setText(""+(i+1));

        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        ll.addView(btns[i], lp);

        final int j = i;
        btns[j].setOnClickListener(new OnClickListener() {

            public void onClick(View v) 
            {
                //loadList(j);
                CheckBtnBackGroud(j);
            }
        });
    }

}

 private void CheckBtnBackGroud(int index)
    {

        for(int i=0;i<noOfBtns;i++)
        {
            if(i==index)
            {
                btns[index].setBackgroundDrawable(getResources().getDrawable(R.drawable.box_green));
                btns[i].setTextColor(getResources().getColor(android.R.color.white));
            }
            else
            {
                btns[i].setBackgroundColor(getResources().getColor(android.R.color.transparent));
                btns[i].setTextColor(getResources().getColor(android.R.color.black));
            }
        }

    }




private class GetContacts extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Showing progress dialog
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Please wait...");
        pDialog.setCancelable(false);
        pDialog.show();

    }

    @Override
    protected Void doInBackground(Void... arg0) {
        // Creating service handler class instance
        ServiceHandler sh = new ServiceHandler();

        // Making a request to url and getting response
        String jsonStr = sh.makeServiceCall(gotourl(), ServiceHandler.GET);

        Log.d("Response: ", "> " + jsonStr);

        if (jsonStr != null) {
            try {
                JSONObject jsonObj = new JSONObject(jsonStr);

                // Getting JSON Array node
                contacts = jsonObj.getJSONArray("result");

                // looping through All Contacts
                for (int i = 0; i < contacts.length(); i++) {
                    Integer a = contacts.length();
                    Log.d("loop", a.toString());
                    JSONObject c = contacts.getJSONObject(i);

                    String id = c.getString("npi");
                    String name = c.getString("first_name");
                    String email = c.getString("last_name");
                    //String address = c.getString(TAG_ADDRESS);
                    String gender = c.getString("type");


                    // tmp hashmap for single contact
                    HashMap<String, String> contact = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    contact.put("npi", id);
                    contact.put("first_name", name);
                    contact.put("last_name", email);
                    //contact.put(TAG_PHONE_MOBILE, mobile);

                    contact.put("type", gender);
                    // adding contact to contact list
                    contactList.add(contact);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            Log.d("ServiceHandler", "Couldn't get any data from the url");


        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        // Dismiss the progress dialog
        if (pDialog.isShowing())
            pDialog.dismiss();
        /**
         * Updating parsed JSON data into ListView
         * */
        ListAdapter adapter = new SimpleAdapter(
                MainActivity.this, contactList,
                R.layout.list_item, new String[] { "first_name", "last_name",
                        "type" }, new int[] { R.id.name,
                        R.id.email, R.id.mobile });

        setListAdapter(adapter);
    }

}}

我更改代码。当我单击下一个按钮时[如 2,3,4,5]。显示第一页数据。这是我修改后的代码。感谢任何帮助:

public class MainActivity extends ListActivity {

private TextView title;
Context context;
Button btnSearch ;
EditText txtSearch;
private ListView listview;

private ProgressDialog pDialog;

// URL to get contacts JSON

    public int TOTAL_LIST_ITEMS = 50;
    public int NUM_ITEMS_PAGE   = 10;
    private int noOfBtns;
    private Button[] btns;




// JSON Node names
private static final String TAG_CONTACTS = "contacts";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
private static final String TAG_ADDRESS = "address";
private static final String TAG_GENDER = "gender";
private static final String TAG_PHONE = "phone";
private static final String TAG_PHONE_MOBILE = "mobile";
private static final String TAG_PHONE_HOME = "home";
private static final String TAG_PHONE_OFFICE = "office";

// contacts JSONArray
JSONArray contacts = null;

// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnSearch=(Button)findViewById(R.id.buttonSearch);
    txtSearch=(EditText)findViewById(R.id.Searchtext);
    title    = (TextView)findViewById(R.id.title);

}

public String gotourl()
{


     final  EditText txtSearch=(EditText)findViewById(R.id.Searchtext);

     String ts=txtSearch.getText().toString();

     String url = "http://latest.bloomapi.com/api/search?limit=50&offset=0&key1=last_name&op1=eq&value1="+ts;

     return url ;
}

public void Searchfunction(View v)

{
    Btnfooter();


    CheckBtnBackGroud(0);
    contactList = new ArrayList<HashMap<String, String>>();

    ListView lv = getListView();




    // Listview on item click listener
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            if(position%2==0)
            {
                view.setBackgroundColor(Color.parseColor("#F4FA58"));

            }else
            {
            view.setBackgroundColor(Color.parseColor("#DA81F5"));
            }

            // getting values from selected ListItem
            String name = ((TextView) view.findViewById(R.id.name))
                    .getText().toString();
            String cost = ((TextView) view.findViewById(R.id.email))
                    .getText().toString();
            String description = ((TextView) view.findViewById(R.id.mobile))
                    .getText().toString();

            // Starting single contact activity
            Intent in = new Intent(getApplicationContext(),
                    SingleContactActivity.class);
            in.putExtra(TAG_NAME, name);
            in.putExtra(TAG_EMAIL, cost);
            in.putExtra(TAG_PHONE_MOBILE, description);
            startActivity(in);

        }
    });

    // Calling async task to get json
    new GetContacts().execute();    
}
private void Btnfooter()
{
    int val = TOTAL_LIST_ITEMS%NUM_ITEMS_PAGE;
    val = val==0?0:1;
    noOfBtns=TOTAL_LIST_ITEMS/NUM_ITEMS_PAGE+val;

    LinearLayout ll = (LinearLayout)findViewById(R.id.btnLay);

    btns    =new Button[noOfBtns];

    for(int i=0;i<noOfBtns;i++)
    {
        btns[i] =   new Button(this);
        btns[i].setBackgroundColor(getResources().getColor(android.R.color.transparent));
        btns[i].setText(""+(i+1));

        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        ll.addView(btns[i], lp);

        final int j = i;
        btns[j].setOnClickListener(new OnClickListener() {

            public void onClick(View v) 
            {

                new GetContacts().execute();    
                CheckBtnBackGroud(j);
            }


        });
    }

}

 private void CheckBtnBackGroud(int index)
    {
      title.setText("Page "+(index+1)+" of "+noOfBtns);
        for(int i=0;i<noOfBtns;i++)
        {
            if(i==index)
            {
                btns[index].setBackgroundDrawable(getResources().getDrawable(R.drawable.box_green));
                btns[i].setTextColor(getResources().getColor(android.R.color.white));
            }
            else
            {
                btns[i].setBackgroundColor(getResources().getColor(android.R.color.transparent));
                btns[i].setTextColor(getResources().getColor(android.R.color.black));
            }
        }

    }




private class GetContacts extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Showing progress dialog
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Please wait...");
        pDialog.setCancelable(false);
        pDialog.show();

    }

    @Override
    protected Void doInBackground(Void... arg0) {
        // Creating service handler class instance
        ServiceHandler sh = new ServiceHandler();

        // Making a request to url and getting response
        String jsonStr = sh.makeServiceCall(gotourl(), ServiceHandler.GET);

        Log.d("Response: ", "> " + jsonStr);

        if (jsonStr != null) {
            try {
                JSONObject jsonObj = new JSONObject(jsonStr);

                int number = 0;
                int start = number * NUM_ITEMS_PAGE;


                // looping through All Contacts




                // Getting JSON Array node
                contacts = jsonObj.getJSONArray("result");

                // looping through All Contacts
                //for (int i = 0; i < contacts.length(); i++) {
                for(int i=start;i<(start)+NUM_ITEMS_PAGE;i++) {


                    Integer a = contacts.length();
                    Log.d("loop", a.toString());
                    JSONObject c = contacts.getJSONObject(i);

                    String id = c.getString("npi");
                    String name = c.getString("first_name");
                    String email = c.getString("last_name");

                    String gender = c.getString("type");


                    // tmp hashmap for single contact
                    HashMap<String, String> contact = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    contact.put("npi", id);
                    contact.put("first_name", name);
                    contact.put("last_name", email);
                    //contact.put(TAG_PHONE_MOBILE, mobile);

                    contact.put("type", gender);
                    // adding contact to contact list
                    contactList.add(contact);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            Log.d("ServiceHandler", "Couldn't get any data from the url");


        }

        return null;
    }



    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        // Dismiss the progress dialog
        if (pDialog.isShowing())
            pDialog.dismiss();
        /**
         * Updating parsed JSON data into ListView
         * */
        ListAdapter adapter = new SimpleAdapter(
                MainActivity.this, contactList,
                R.layout.list_item, new String[] { "first_name", "last_name",
                        "type" }, new int[] { R.id.name,
                        R.id.email, R.id.mobile });

        setListAdapter(adapter);
    }

}}

下面是我的代码,用于显示带分页的列表视图。有两个蓝色按钮用于更改页面。

您可以根据您的需要进行定制。

创建UserCategory.java

    package com.UserCategory;
import java.net.URL;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;

public class UserCategory extends Activity implements OnClickListener{
private final int PAGE_SIZE = 5;
private int StartingIndex = 0;
ArrayList<String> userClass=new ArrayList<String>();
int textlength=0;

private String lv_arr[];
private ListView lv1;
EditText searchText;

//Button Previous;

private String Machine[]={"Machine 1","Machine 2","Machine 3","Machine 4","Machine 5","Machine 6","Machine 7","Machine 8","Machine 9","Machine 10","Machine 11","Machine 12","Machine 1","Machine 2","Machine 3","Machine 4","Machine 5","Machine 6","Machine 7","Machine 8","Machine 9","Machine 10","Machine 11","Machine 12"};
ImageView next,Previous;

@Override        
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
      this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.main);
        lv1=(ListView)findViewById(R.id.ListView01);
        searchText=(EditText)findViewById(R.id.et_Serchlist);
        next=(ImageView)findViewById(R.id.btn_next);
        Previous=(ImageView)findViewById(R.id.btn_previous);
        next.setOnClickListener(this);
        Previous.setOnClickListener(this);       
     //parsing();
    lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , Machine));
    changeListViewModel(0);


   }
private void changelist(int startingIndex) {

    if(startingIndex < 0) {
        Previous=(ImageView)findViewById(R.id.btn_previous);
        ImageView back=(ImageView)findViewById(R.id.btn_Whiteprevious);
        back.setVisibility(1);
        Previous.setVisibility(4);
        startingIndex = 0;
    }else if(startingIndex >= userClass.size())
        startingIndex -= PAGE_SIZE;
    StartingIndex   = startingIndex;
    int endingIndex = startingIndex + PAGE_SIZE;

    System.out.println("ending index"+endingIndex);
    if(StartingIndex!=0){
        Previous=(ImageView)findViewById(R.id.btn_previous);
        ImageView back=(ImageView)findViewById(R.id.btn_Whiteprevious);
        back.setVisibility(4);
        Previous.setVisibility(1);


    }
    if(endingIndex == userClass.size()){
        ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
        Forward.setVisibility(1);
         next=(ImageView)findViewById(R.id.btn_next);
         next.setVisibility(4);
    }
    if(endingIndex != userClass.size()){
        ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
        Forward.setVisibility(4);
         next=(ImageView)findViewById(R.id.btn_next);
         next.setVisibility(1);
    }
    if(endingIndex > userClass.size()) endingIndex = userClass.size();
    try {

        String[] subSet = getDataSubset1(startingIndex, endingIndex);
        System.out.println("subSet array"+subSet);
        lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , subSet));

    } catch (Exception e) {
        e.printStackTrace();
    }
}
private String[] getDataSubset1(int startingIndex, int endingIndex){
    String[] changeList = new String[endingIndex - startingIndex];
    int index = -1;
    for(int x = startingIndex; x < endingIndex; x++)

        changeList[++index] = userClass.get(x);


    return changeList;

}

private void changeListViewModel(int startingIndex){

    if(startingIndex < 0) {
        Previous=(ImageView)findViewById(R.id.btn_previous);
        ImageView back=(ImageView)findViewById(R.id.btn_Whiteprevious);
        back.setVisibility(1);
        Previous.setVisibility(4);
        startingIndex = 0;
    }

    else if(startingIndex >= Machine.length){

        startingIndex -= PAGE_SIZE;
    }
        System.out.println("strating"+startingIndex);

    System.out.println("startingIndex"+startingIndex);
    StartingIndex   = startingIndex;
    int endingIndex = startingIndex + PAGE_SIZE;
    System.out.println("endingIndex"+endingIndex);
     if(StartingIndex!=0)
     {
        Previous=(ImageView)findViewById(R.id.btn_previous);
        ImageView back=(ImageView)findViewById(R.id.btn_Whiteprevious);
        back.setVisibility(4);
        Previous.setVisibility(1);
        }
     if(endingIndex == userClass.size()){
            ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
            Forward.setVisibility(1);
             next=(ImageView)findViewById(R.id.btn_next);
             next.setVisibility(4);
        }
     if(endingIndex != userClass.size()){
            ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
            Forward.setVisibility(4);
             next=(ImageView)findViewById(R.id.btn_next);
             next.setVisibility(1);
        }
    System.out.println("ending index"+endingIndex);
    if(endingIndex > Machine.length) {

        endingIndex = Machine.length;
        ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
        Forward.setVisibility(1);
         next=(ImageView)findViewById(R.id.btn_next);
         next.setVisibility(4);
    }


    String[] subSet = getDataSubset(startingIndex, endingIndex);
    System.out.println("subSet main array"+subSet.length);
    lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , subSet));
}

private String[] getDataSubset(int startingIndex, int endingIndex){
    String[] toRet = new String[endingIndex - startingIndex];
    int index = -1;
    System.out.println("index"+index);
    for(int x = startingIndex; x < endingIndex; x++)
        toRet[++index] = Machine[x];

    return toRet;

}
private void parsing() {
    // TODO Auto-generated method stub
    try {

        URL url = new URL("http://10.10.1.100/DogEventsWebService/EventService.svc/categories/1");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new InputSource(url.openStream()));
        doc.getDocumentElement().normalize();

        NodeList nodeList = doc.getElementsByTagName("UserCategory");
        Machine = new String[nodeList.getLength()];


        for (int i = 0; i < nodeList.getLength(); i++) 
        {

            Node node = nodeList.item(i);
            Machine[i] = new String();

            Element fstElmnt = (Element) node;
            NodeList nameList = fstElmnt.getElementsByTagName("ClassDescription");
            Element nameElement = (Element) nameList.item(0);
            nameList = nameElement.getChildNodes();
            Machine[i]=((Node) nameList.item(0)).getNodeValue();
         }

        System.out.println("after for loop Machine"+Machine);

    } catch (Exception e) {
        System.out.println("XML Pasing Excpetion = " + e);
    }
}
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.btn_next:

        textlength=searchText.getText().length();
        System.out.println("nextbutton"+textlength);
        if(textlength==0){
            changeListViewModel(StartingIndex + PAGE_SIZE);
        }else{
            changelist(StartingIndex + PAGE_SIZE);
            }

        break;
    case R.id.btn_previous:
        textlength=searchText.getText().length();
        if(textlength==0){
        changeListViewModel(StartingIndex - PAGE_SIZE);
        }else{
        changelist(StartingIndex - PAGE_SIZE);
        }
         break;
        default:
        break;
     }
}

}

创建main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <View android:layout_height="35dp" 
      android:layout_width="fill_parent" 
      android:background="#ffffff"/>
  <TextView  android:id="@+id/tv_header"
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/hello" 
       android:layout_alignParentTop="true" 
       android:layout_marginLeft="0dp"
       android:textSize="25dp"/>
       <EditText 
       android:id="@+id/et_Serchlist" 
     android:layout_height="35dp" 
     android:paddingLeft="19dp"
      android:layout_marginLeft="60dp"
     android:layout_toRightOf="@+id/tv_header"
     android:maxLength="20"
     android:maxLines="1"
     android:inputType="text"
     android:hint="Search" 
     android:textColor="#ffffff"
     android:background="@drawable/my_border"
     android:layout_width="100dip"/>
  <ListView 
   android:id="@+id/ListView01"
   android:layout_width="fill_parent"
   android:textSize="4px" 
   android:layout_below="@+id/tv_header"
   android:layout_above="@+id/btn_previous"
   android:layout_height="wrap_content" />
     <View android:layout_height="55dp" 
       android:layout_below="@+id/ListView0"
       android:layout_alignParentBottom="true"
       android:layout_width="fill_parent" 
       android:background="#ffffff"/>
        <ImageView 
        android:src="@drawable/grewprevious"  
        android:id="@+id/btn_Whiteprevious" 
        android:layout_width="wrap_content" 
       android:layout_marginLeft="12dp"
    android:layout_marginBottom="6dp"
    android:layout_below="@+id/ListView0" 
   android:visibility="invisible"
        android:layout_alignParentBottom="true"
        android:layout_height="wrap_content"/>
      <ImageView 
        android:src="@drawable/right"  
        android:id="@+id/btn_grewforward" 
        android:layout_width="wrap_content" 
        android:layout_marginLeft="259dp"
        android:layout_marginBottom="6dp"
        android:layout_below="@+id/ListView0" 
        android:visibility="invisible"
        android:layout_alignParentBottom="true"
        android:layout_height="wrap_content"/>
     <ImageView 
        android:src="@drawable/backward" 
       android:id="@+id/btn_previous"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentBottom="true"
       android:layout_marginLeft="12dp"
       android:layout_marginBottom="6dp"
       android:layout_below="@+id/ListView0"
       android:onClick="backButtonClicked"/>

    <ImageView android:src="@drawable/forward" 
     android:id="@+id/btn_next"
    android:layout_width="80dp" 
    android:layout_marginBottom="6dp"
    android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" 
   android:layout_below="@+id/ListView0"
   android:layout_marginLeft="249dp"
    android:text="Next" 
    android:onClick="nextButtonClicked"/>   
</RelativeLayout>

创建用户列表.xml

<?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="match_parent">
  <TextView android:id="@+id/tv_className"
   android:layout_height="wrap_content" 
   android:layout_width="wrap_content"/> 
</LinearLayout>

将 my_border.xml 添加到 Drawable 文件夹中:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dip" android:color="#ee777777" />
<solid android:color="#ee444444"/>
<padding  
   android:left="20dip" 
  android:top="2dip" 
  android:right="20dip" 
  android:bottom="2dip" />
<corners android:radius="15dip" />
![enter image description here][1]</shape>

如果它给出图像错误,则使用任何其他图像并运行应用程序。

让我知道它对你有用。

Thanks

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中的列表视图分页 的相关文章

  • 如何从 AAR 依赖项中排除特定资源?

    有没有一种相当简单的方法来实现模块的build gradle文件来指示应排除依赖项中的某些文件 我特别感兴趣的是从 AAR 中排除某些资源 金丝雀泄密 https github com square leakcanary是一个有趣的库 可帮
  • ACTION_VIEW 的 Intent.createChooser 仅显示默认浏览器

    我正在尝试使用 Intent createChooser 显示应用程序选择器对话框 该对话框将列出用户手机中所有可用的网络浏览器 我正在使用下面的代码 Intent browserIntent new Intent Intent ACTIO
  • 未找到 Gradle DSL 方法:“versionCode()”

    构建我的 Android 项目时遇到问题 我使用Grgit https github com ajoberstar grgit填写versionCode and versionName在 gradle 中 一切工作正常 直到我将 Andro
  • 查找回收器视图中的第一个可见项目是否是列表的第一项

    我有一个包含 13 个数据项的回收器视图 我想知道列表中的第一项是否可见 我知道像这样的方法findFirstVisibleItemPosition and findLastVisibleItemPosition但他们没有说明第一个可见项目
  • 启动 Twitter 应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 Twitter 应用程序的 Android Intent https stackoverflow com questions 2077008 android intent for twitter ap
  • 如何从另一个xml文件动态更新xml文件?

    我想从另一个 xml 文件更新 xml 文件 我使用了一个 xml 文件 如下所示 one xml
  • layout.xml 的用途是什么?

    人们为什么使用layout xml在他们的resources like
  • 如何在照片删除后刷新 Android 的 MediaStore

    问题 如何使媒体存储刷新其已删除文件的条目 从外部存储中删除代码中的照片后 我仍然在图库中看到已删除照片的插槽 空白照片 画廊似乎反映了媒体存储 并且在媒体存储中找到了已删除的照片 直到手机重新启动或通常 直到重新扫描媒体为止 尝试扫描已删
  • Android 手机应用意图

    我想在手机上启动手机应用程序作为意图 我正在使用这个代码 startActivity getPackageManager getLaunchIntentForPackage com android phone 但该函数抛出一个空指针异常 因
  • Flutter / FireStore:如何在 Flutter 中显示 Firestore 中的图像?

    我想将我在应用程序中使用的一些图像放入 Firestore 并从那里显示它们 而不是将它们作为资产捆绑在我的应用程序中 为了做到这一点 我想出了以下解决方案 对于我想要显示图像的项目 我创建了一个 Firebase 文档 其中有一个字段存储
  • 在 Android 上的测试用例之外运行 ExtractDecodeEditEncodeMuxTest

    我正在尝试添加在 Android 上提取 解码 编辑 编码和混合视频的功能 因此 我发现了一些非常有用的实现 它是Android CTS的一部分ExtractDecodeEditEncodeMuxTest https android goo
  • 如何在 Android 上的 HttpPost 中发送 unicode 字符

    我试图在我的应用程序中允许多语言支持 这会发出 HTTP post 来上传新消息 我需要做什么才能支持日语和其他非拉丁语语言 我的代码目前看起来像这样 note the msg string is a JSON message by the
  • 当参数具有默认值时,为什么无法使用导航组件将参数传递给片段?

    我正在使用导航组件 但我不明白为什么如果定义了参数 则将参数传递给下面的方法时会出现错误 我正在使用 SafeArgs 只有当我为此参数定义默认值时才会出现此错误 有人可以解释一下为什么会发生这种情况以及如何解决它吗 这是导航图的部分代码
  • 在 Android 中使用 iText 读取或打开 PDF 文件

    我是 Android 应用程序开发新手 使用 iText 我完成了 PDF 创建并在创建的文件上写入 现在我想阅读该 PDF 文件 如何使用 iText 打开或阅读 PDF 文件 例子将是可观的 那么提前 哪个是渲染 PDF 文件的最佳库
  • 如何覆盖日期选择器的高度和宽度以填充父布局

    我有一个活动包含一个日期选择器 我想设置DatePicker适合屏幕 我试过这个答案 https stackoverflow com questions 6674667 how to customize date pickers width
  • 当应用程序未运行时如何堆叠 Firebase Cloud Messaging 通知?

    我在用Firebase Cloud Messaging将推送通知从我的服务器发送到我的 Android 应用程序 当应用程序运行时 通知是stacked因为我将它们设置为我的一个组FirebaseMessagingService 这很好 但
  • 无法在 Android 模拟器中安装 apk

    我正在尝试通过 adb shell 在 ICS 模拟器中安装 apk 从一个站点下载 但出现以下错误 失败 INSTALL FAILED UID CHANGED 可能是什么问题 只需 rm r 有问题的数据目录即可 如果您在安装时遇到此错误
  • Android:单一活动,多个视图

    我不是 Android 专业人士 尽管我开发了一个包含 50 多个活动的应用程序 这使得该应用程序非常庞大 经过8周的开发 现在出现了一些问题 导致应用程序难以维护和升级 我正在处理的主要问题是 我无法将对象引用传递给活动的构造函数 事实上
  • ormlite 将日期读取为 'yyyy-MM-dd'

    我需要读取给我的 sqlite 数据库 因此我无法更改表中的日期格式 yyyy MM dd 当我尝试使用 ormlite 为我生成对象时 使用以下注释 DatabaseField columnName REVISION DATE dataT
  • OpenGL ES 2.0 屏幕闪烁

    我面临着一个大问题 我正在使用带有 Android 4 0 3 的 Transformer tf101 选项卡 我的应用程序使用自定义 OpenGL ES 2 0 表面 我正在用纹理渲染多个平面 该纹理大约发生变化 每秒 20 次 并通过传

随机推荐