Android如何在我的动态列表视图中显示arraylist索引号

时间:2014-01-27 08:25:20

标签: android listview

对不起我的英文,如何在动态列表视图中显示arraylist索引号? 例如在我的应用程序列表视图显示时,在列表视图中,每个单元格都有一个索引号显示,如第一个单元格1,第二个单元格2,第三个单元格3等等。我可以实现这个吗?提前感谢。

这是截图: 在我的屏幕截图中看到左边的int数字1.现在想要在第二个单元格显示2中等等..

enter image description here

这是我的活动:

    public class Artists extends Activity {

   // Connection detector
    ConnectionDetector cd;

    // Alert dialog manager
    AlertDialogManager alert = new AlertDialogManager();

    // Progress Dialog
    private ProgressDialog pDialog;

    // Creating JSON Parser object
    JSONParser jsonParser = new JSONParser();
    // This is not using now if you want you can remove its all references :)
    ArrayList<HashMap<String, String>> albumsList;

    ArrayList<AdapterDTOArtist> mAdapterDTOs = null;
    private LazyAdapterArtist mLazyAdatper = null;

    private ArrayList<String> array_sort = new ArrayList<String>();
    int textlength = 0;

    // albums JSONArray
    JSONArray albums = null;

  LinearLayout ll_artists_chart;
  LinearLayout ll_artists_newrelease;
 private EditText etSearch;

 private static String URL_ALBUMS = "My URL";

  // JSON Node names
private static final String TAG_CONTACTS = "data";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";

private ListView lv = null;
EditText et_artists_searchWord;
// contacts JSONArray
JSONArray contacts = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.artists);

lv = (ListView) findViewById(R.id.artist_main_list_id);

cd = new ConnectionDetector(getApplicationContext());

// Check for internet connection
if (!cd.isConnectingToInternet()) {
    // Internet Connection is not present
    alert.showAlertDialog(Artists.this,
            "Internet Connection Error",
            "Please connect to working Internet connection", false);
    // stop executing code by return
    return;
}

// Hashmap for ListView
        albumsList = new ArrayList<HashMap<String, String>>();
        mAdapterDTOs = new ArrayList<AdapterDTOArtist>();

        // Loading Albums JSON in Background Thread
        new LoadAlbums().execute();

        // get listview

        /**
         * Listview item click listener TrackListActivity will be lauched by
         * passing album id
         * */
        lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                    long arg3) {
                // on selecting a single album

            }
        });


ll_artists_chart = (LinearLayout) findViewById(R.id.ll_artists_chart);
ll_artists_newrelease = (LinearLayout) findViewById(R.id.ll_artists_newrelease);
et_artists_searchWord = (EditText) findViewById(R.id.et_artists_searchWord);

et_artists_searchWord.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
    //  ((Filterable) Artists.this.mAdapterDTOs).getFilter().filter(s);
        List<AdapterDTOArtist> list = filter(s.toString(),mAdapterDTOs, true);
        mAdapterDTOs.addAll(list);
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub

    }
});

ll_artists_chart.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent intent = new Intent(getBaseContext(), ChartActivity.class);
        startActivity(intent);
    //  finish();
    }
});

ll_artists_newrelease.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent intent = new Intent(getBaseContext(), NewReleases.class);
        startActivity(intent);
        //finish();
    }
  });



}

  /**
  * Background Async Task to Load all Albums by making http request
  * */
  class LoadAlbums extends AsyncTask<String, String, String> {

  /**
   * Before starting background thread Show Progress Dialog
   * */
   @Override
 protected void onPreExecute() {
    super.onPreExecute();
    pDialog = new ProgressDialog(Artists.this);
    pDialog.setMessage("Listing Artists ...");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(false);
    pDialog.show();
}

/**
 * getting Albums JSON
 * */
protected String doInBackground(String... args) {
    // Building Parameters
    //List<NameValuePair> params = new ArrayList<NameValuePair>();
    ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

    // Creating JSON Parser instance
    JSONParser jParser = new JSONParser();

    JSONObject json = jParser.getJSONFromUrl(URL_ALBUMS);

    // getting JSON string from URL
    //String json = jsonParser.makeHttpRequest(URL_ALBUMS, "GET", params);

    // Check your log cat for JSON reponse
    Log.i("Albums JSON: ", "> " + json);

    try {
        //albums = new JSONArray(json);
        albums = json.getJSONArray(TAG_CONTACTS);

        if (albums != null) {
            // looping through All albums
            for (int i = 0; i < albums.length(); i++) {
                JSONObject c = albums.getJSONObject(i);

                // Storing each json item values in variable
                String id = c.getString(TAG_ID);
                String name = c.getString(TAG_NAME);

                /*String EateryThmbnailUrl = c
                        .getString(TAG_THMBNAIL_URL);*/
                // ~\/Uploads\/EateryImages\/\/7\/41283f1f-8e6f-42d4-b3c1-01f990efb428.gif
                /*EateryThmbnailUrl = HOST_URL
                        + EateryThmbnailUrl.replace("~", "");*/

                AdapterDTOArtist adapterDTO = new AdapterDTOArtist();

                adapterDTO.setmTag_Id(id);
                adapterDTO.setmTag_Name(name);


            //  adapterDTO.setmImage_URL(EateryThmbnailUrl);

                mAdapterDTOs.add(adapterDTO);

                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();
                HashMap<String, Integer> map1 = new HashMap<String, Integer>();

                // adding each child node to HashMap key => value
                map.put(TAG_ID, id);
                map.put(TAG_NAME, name);


                // adding HashList to ArrayList
                albumsList.add(map);
            }
        } else {
            Log.d("Albums: ", "null");
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

    return null;
 }

  /**
  * After completing background task Dismiss the progress dialog
  * **/
 protected void onPostExecute(String file_url) {
    // dismiss the dialog after getting all albums
    pDialog.dismiss();
    // updating UI from Background Thread
    runOnUiThread(new Runnable() {
        public void run() {
            /**
             * Updating parsed JSON data into ListView
             * */
            // updating listview
            mLazyAdatper = new LazyAdapterArtist(Artists.this,
                    mAdapterDTOs);
            lv.setAdapter(mLazyAdatper);

            // mLazyAdatper.setDataSet(mAdapterDTOs);

        }
    });

}

}

public static List<AdapterDTOArtist> filter(String string,
    Iterable<AdapterDTOArtist> iterable, boolean byName) {
if (iterable == null)
    return new LinkedList<AdapterDTOArtist>();
 else {
    List<AdapterDTOArtist> collected = new LinkedList<AdapterDTOArtist>();
    Iterator<AdapterDTOArtist> iterator = iterable.iterator();
    if (iterator == null)
        return collected;
    while (iterator.hasNext()) {
        AdapterDTOArtist item = iterator.next();
        collected.add(item);
    }
    return collected;
}
}

}

我的AdapterDTOArtist类:

 public class AdapterDTOArtist {

private String mTag_Id;
private String mTag_Name;

public String getmTag_Name() {
return mTag_Name;
}

public void setmTag_Name(String mTag_Name) {
 this.mTag_Name = mTag_Name;
}

public String getmTag_Id() {
return mTag_Id;
}

public void setmTag_Id(String mTag_Id) {
this.mTag_Id = mTag_Id;
}

}

我的LazyAdapterArtist课程:

 public class LazyAdapterArtist extends BaseAdapter {

private Context mContext = null;
private ArrayList<AdapterDTOArtist> mAdapterDTOs = null;

public LazyAdapterArtist(Context context,
    ArrayList<AdapterDTOArtist> mAdapterDTOs2) {
// TODO Auto-generated constructor stub
this.mContext = context;
this.mAdapterDTOs = mAdapterDTOs2;
}

public void setDataSet(ArrayList<AdapterDTOArtist> adapterDTOs) {
this.mAdapterDTOs = adapterDTOs;
notifyDataSetChanged();
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return mAdapterDTOs.size();
 }

 @Override
 public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  // TODO Auto-generated method stub
  View row = convertView;
  ViewHolder mHolder = new ViewHolder();

  if (row == null) {
    // Cell is inflating for first time
    row = LayoutInflater.from(mContext)
            .inflate(com.whizpool.triplevmusic.R.layout.row_artists,
                    null, false);

    mHolder.mNameTxt = (TextView) row
            .findViewById(com.whizpool.triplevmusic.R.id.tv_row_artists);

    row.setTag(mHolder);

} else {
    // recycling of cells
    mHolder = (ViewHolder) row.getTag();
}

mHolder.mNameTxt.setText(mAdapterDTOs.get(position).getmTag_Name());

return row;
}

static class ViewHolder {

TextView mNameTxt = null;

}
}

只想串行显示我的arraylist单元格,就像第一个单元格是1,2nd cell 2一样

3 个答案:

答案 0 :(得分:4)

在listview适配器中,在getView()方法中,您可以将该位置用于此目的。如果您没有任何textView来显示数字,请先将其添加到listview项目,然后在getView()方法中使用它

添加新的文字视图以显示您的位置编号;

static class ViewHolder {
  TextView mNameTxt = null;
  TextView mSeqNo;  //new
}

然后在getView()方法中使用它,

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  // TODO Auto-generated method stub
  View row = convertView;
  ViewHolder mHolder = new ViewHolder();

  if (row == null) {

   // rest of your code
   mHolder.mSeqNo = (TextView)row.findViewById(R.id.your_text_view);    

    row.setTag(mHolder);

  } else {
    // recycling of cells
    mHolder = (ViewHolder) row.getTag();
  }

  //rest of your code

  mHolder.mSeqNo.setText("" + position);

  return row;
}

答案 1 :(得分:0)

position方法中使用getView参数就足够了。它从0(第一个索引)开始,然后是1,2,3 ......

答案 2 :(得分:0)

mHolder.mSeqNo.setText("" + (position+1));

这将从1开始seq数字,如1,2,3,.....等等到列表的末尾。但是给mHolder.mSeqNo.setText("" + (position)从0开始你的数字,因为列表从0开始(索引的第一个值)。一切顺利!