2016-05-29 8 views
1

Я создаю приложение для подробностей студента в android.I нужно отобразить фотографию студента наверху и отобразить имя, номер рулона, адрес и т. Д. В качестве таблицы. Я добавил изображение в верхней части и списке чуть ниже изображения. Могу добавить изображение внутри вида списка (теперь изображение не прокручивается).Добавить изображение в ListView Android

activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/img" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/def" 
     android:layout_centerHorizontal="true" 
     android:layout_gravity="center_horizontal"/> 

    <ListView 
     android:id="@id/list" 
     android:layout_above="@+id/ad_view" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" > 
    </ListView> 

</LinearLayout> 

Activity.java

 list = (ListView) findViewById(R.id.list); 
ArrayList<HashMap<String, String>> productsList; 
productsList = new ArrayList<HashMap<String, String>>(); 


/* 
adding data from database to productsList 

*/ 



    ListAdapter adapter = 
      new SimpleAdapter(this, productsList, R.layout.full, new String[]{"left", "right"}, 
        new int[]{R.id.left, R.id.right}); 

    list.setAdapter(adapter); 

full.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:background="@drawable/background_border" 
    android:padding="15dp" 
    > 
<TextView 
    android:id="@+id/left" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:text="cnsdsdsf:" 
    android:layout_weight="1" 
    android:gravity="center" 
    /> 
    <TextView 
    android:id="@+id/right" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:text="TextView" 
    android:layout_weight="1" 
    android:gravity="center" 
    /> 
</LinearLayout> 

ответ

4

вы можете использовать ImageView imageView = new ImageView(this); listView.addHeaderView(imageView); добавить ImageView на голову ListView

+0

спасибо, что вы спасли мое время –

2

Вы можете обработать верхний ряд или любую другую строку, специально предназначенную для изображения. в getView() надуть с раздельной компоновкой для этого изображения в соответствии с положением.

1

Вы также можете изменить файл макета списка элементов (full.xml) и создать пользовательский адаптер listview. Этот метод даст вам больше свободы в плане дизайна. Вы можете играть с этим full.xml

full.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingLeft="64dp" 
    android:paddingRight="32dp" 
    android:paddingTop="4dp" 
    android:paddingBottom="4dp" 
    tools:background="#ffaa00"> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/studentPicture" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:src="@drawable/student_picture"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/left" 
    android:layout_centerVertical="true" 
    android:layout_toRightOf="@+id/studentPicture" 
    android:layout_toEndOf="@+id/studentPicture" 
    android:textColor="#ffffffff" 
    android:textSize="20sp" 
    android:paddingLeft="10dp" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/right" 
    android:layout_centerVertical="true" 
    android:layout_toRightOf="@+id/left" 
    android:layout_toEndOf="@+id/left" 
    android:textColor="#ffffffff" 
    android:textSize="20sp" 
    android:paddingLeft="10dp" /> 
</RelativeLayout> 

Затем создать адаптер, который будет использовать этот список макет элемент файла:

StudentsAdapter.java

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class StudentsAdapter extends BaseAdapter{ 

    private Context mContext; 
    private String[] mNames; 
    private String[] mOtherInfo; 

    public StudentsAdapter (Context context, String[] mNames, String[] mOtherInfo) { 
     mContext = context; 
     mNames = students; 
     mOtherInfo = mOtherInfo; 
    } 

    @Override 
    public int getCount() { 
     return mNames.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return mNames[position]; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder holder; 

     if (convertView == null) { 
      //brand new 
      convertView = LayoutInflater.from(mContext).inflate(R.layout.full, null); 
      holder = new ViewHolder(); 
      holder.studentImageView = (ImageView) convertView.findViewById(R.id.studentPicture); 
      holder.left= (TextView) convertView.findViewById(R.id.left); 
      holder.right= (TextView) convertView.findViewById(R.id.right); 

      convertView.setTag(holder); 
     } 
     else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     //here you set the picture, name, etc. 
     holder.studentImageView.setImageResource(/* your method to find specific image view */); 
     holder.left.setText(mNames[position]); 
     holder.right.setText(mOtherInfo[position]); 

     return convertView; 
    } 

    private static class ViewHolder { 
     ImageView studentImageView; 
     TextView left; 
     TextView right; 
    } 
} 

Деятельность.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin"> 

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@android:id/list" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@android:id/empty" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:text="No data to display" 
    android:textColor="#ffffffff"/> 
</RelativeLayout> 

А теперь внесите этот адаптер в свой Activity.java

import android.app.Activity; 
import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.widget.TextView; 

import java.util.Arrays; 

public class Activity extends Activity { 

    //you will need to set this data 
    private String[] mNames; 
    private String[] mOtherInfo; 

    ListView mListView; 
    TextView mEmptyTextView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity); 

     mListView = (ListView) findViewById(android.R.id.list); 
     mEmptyTextView = (TextView) findViewById(android.R.id.empty); 

     DayAdapter adapter = new DayAdapter(this, mNames, mOtherInfo); 
     mListView.setAdapter(adapter); 
     mListView.setEmptyView(mEmptyTextView); 
    } 
} 
Смежные вопросы