user1798049
user1798049

Reputation: 265

how to set listview row height

i have listview that loads some data from my phone and shows it..my problem is that listvew rows are too small and diffrent heights..can someone give me sample enter image description here

my code : package info.superkiki.pocket.sampler;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class Activityone extends Activity{

     ListView musiclist;
     Cursor musiccursor;
     int music_column_index;
     int count;
     MediaPlayer mMediaPlayer;

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
           init_phone_music_grid();

     }

     private void init_phone_music_grid() {
           System.gc();
           String[] proj = { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Video.Media.SIZE };
           musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
           count = musiccursor.getCount();
           musiclist = (ListView) findViewById(R.id.PhoneMusicList);
           musiclist.setAdapter(new MusicAdapter(getApplicationContext()));

           musiclist.setOnItemClickListener(musicgridlistener);
           mMediaPlayer = new MediaPlayer();
     }

     private OnItemClickListener musicgridlistener = new OnItemClickListener() {
           public void onItemClick(AdapterView parent, View v, int position,
long id) {
                 System.gc();
                 music_column_index = musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
                 musiccursor.moveToPosition(position);
                 String filename = musiccursor.getString(music_column_index);
Intent person = new Intent();
Bundle backpack = new Bundle();
backpack.putString("arnswer", filename);
person.putExtras(backpack);
setResult(RESULT_OK, person);
finish();
           }
     };

     public class MusicAdapter extends BaseAdapter {
           private Context mContext;

           public MusicAdapter(Context c) {
                 mContext = c;
           }

           public int getCount() {
                 return count;
           }

           public Object getItem(int position) {
                 return position;
           }

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

           public View getView(int position, View convertView, ViewGroup parent) {
                 System.gc();
                 TextView tv = new TextView(mContext.getApplicationContext());
                 String id = null;
                 if (convertView == null) {
                       music_column_index = musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
                       musiccursor.moveToPosition(position);
                       id = musiccursor.getString(music_column_index);
                       music_column_index = musiccursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);
                       musiccursor.moveToPosition(position);
                       id += musiccursor.getString(music_column_index);
                       tv.setText(id);
                 } else
                       tv = (TextView) convertView;
                 return tv;
           }
 }

}

Upvotes: 1

Views: 2011

Answers (1)

Sababado
Sababado

Reputation: 2532

First, to make things easier on yourself you should create a row as a layout xml file.

Then in your getView method do something like this:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  View row = convertView;
  if(row == null)
  {
      LayoutInflater inflater = getLayoutInflater();
      row = inflater.inflate(R.layout.row_layout_name, parent); 
  }

  //use row.findViewById(...) to get your elements from the layout.

  …

  return v;
}

See this answer for more info: Set ListView item height

Upvotes: 1

Related Questions