2016-07-06 6 views
0

Я хотел бы создать ListView, который содержит ImageView и TextView в каждой строке. Я могу это сделать, но у меня проблема с изменением расстояния между строками. Я думаю, как-то я изменил его, но я не знаю, как это сделать.Расстояние между строками ListView Android

ActorAdapter.java:

ArrayList<Actors> actorList; 
LayoutInflater vi; 
int Resource; 
ViewHolder holder; 

public ActorAdapter(Context context, int resource, ArrayList<Actors> objects) { 
    super(context, resource, objects); 
    vi = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    Resource = resource; 
    actorList = objects; 
} 


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // convert view = design 
    View v = convertView; 
    if (v == null) { 
     holder = new ViewHolder(); 
     v = vi.inflate(Resource, null); 
     holder.image= (ImageView) v.findViewById(R.id.miniimage); 
     holder.name = (TextView) v.findViewById(R.id.name); 
     holder.image.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.d("megnyomtam","a fost"); 
      } 
     }); 
     holder.name.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.d("megnyomtam","a fost"); 
      } 
     }); 
     v.setTag(holder); 
    } else { 
     holder = (ViewHolder) v.getTag(); 
    } 
    holder.image.setImageResource(R.drawable.ic_launcher); 
    new DownloadImageTask(holder.image).execute(actorList.get(position).getImageurl()); 
    holder.name.setText(actorList.get(position).getTitle()); 
    return v; 

} 

static class ViewHolder { 
    public ImageView image; 
    public TextView name; 

} 

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    ImageView bmImage; 

    public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 

} 

ActorFragment.java

ArrayList<Actors> actorsList; 
ActorAdapter adapter; 
ListView listview; 

public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 

    View v = inflater.inflate(R.layout.activity_actor,parent, false); 
    actorsList = new ArrayList<Actors>(); 
    new JSONAsyncTask().execute("http://demo.breona.hu:8080/mobil/mobilService?method=getAllData&appid=ESK"); 

    listview = (ListView)v.findViewById(R.id.list25); 
    adapter = new ActorAdapter(getActivity().getApplicationContext(), R.layout.listview_row_layout, actorsList); 

    listview.setAdapter(adapter); 

    return v; 
} 

Проблема может быть, скрывается в XMLs так я копирую, что тоже.

listview_row_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:focusableInTouchMode="true" 
android:background="@drawable/background"> 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/rellayout"> 

    <ImageView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_alignParentLeft="true" 
     android:id="@+id/miniimage" 
     android:src="@drawable/ic_launcher" 
     android:onClick="onClick"/> 

    <TextView 
     android:id="@+id/name" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@+id/miniimage" 
     android:text="Cherry" 
     android:textColor="#000000" 
     android:onClick="onClick"/> 

</LinearLayout> 

activity_actor.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/LinearLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" android:background="#F1F1F1" 
tools:context=".MainActivity" > 

<ListView 
    android:id="@+id/list25" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    tools:listitem="@layout/listview_row_layout"> 

</ListView> 

Вот картина того, что я хотел бы видеть: https://www.bignerdranch.com/blog/customizing-android-listview-rows-subclassing/

+0

попытайтесь изменить высоту listview_row_layout.xml или используйте recyclerView и добавьте пользовательский devider. –

+0

Можете ли вы разместить изображение того, что вы хотите –

+0

Как? Программно или в xml? И что я должен изменить в listview_row_layout.xml? –

ответ

1

Чтобы изменить расстояние между строками, вы можете использовать padding/margin на LinearLayout, который содержит id-rellayout. (в вашем listview_row_layout.xml)

или вы можете создать элемент представления толкать пространства выше/ниже этого макета .. как

//for example 10dp height 
<View android:layout_width="match_parent" 
     android:layout_height="10dp" 
     android:layout_below="@+id/rellayout"/> 

вы можете дать эту точку зрения цвет тоже, если вы хотите и т.д. ..

лично я получил бы для заполнения/полей на главной компоновке вместо того, чтобы создавать больше видов для рисования, но это еще один способ достижения вашей цели, и я не знаю точно, что вы делаете, и что лучше метод для вас.

+0

К сожалению, не работает. Может быть, ошибка не в XML-файлах? –

+0

невозможно, вы говорите мне, что вы добавляете представление, и вы не видите пробел? – JozeRi

0
<ListView 
android:id="@+id/list" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:divider="@color/yourColor" 
android:dividerHeight="distnace in dp"> 
+0

К сожалению, не работает. –

Смежные вопросы