Постановка задачи: -Отображение информации пользователя на ListView один за другим
В моем коде ниже, я получаю list of User's
который я показываю в настоящее время на google map
который работает хорошо для меня. А также мне нужно показать их на ListView
, который работает неправильно.
Так что в настоящее время у меня есть список two user's in the response
. И если я попытаюсь напечатать их в for loop
, я вижу, что оба пользователя правильно печатаются. Но когда я пытаюсь добавить их в свой ListView
, я вижу only one user
, показывая на ListView twice
? Но я должен видеть как пользователя один за другим на ListView
.
@Override
protected void onPostExecute(ArrayList<User> response) {
for(User user : response){
System.out.println("User:- " +user.getFirstName());
// Something wrong I am doing in below line
adapter=new LazyAdapter(ThesisProjectAndroid.this, mStrings, user);
if(user.getGender()==1) {
Drawable marker=getResources().getDrawable(R.drawable.current_user);
int markerWidth = marker.getIntrinsicWidth();
int markerHeight = marker.getIntrinsicHeight();
marker.setBounds(0, 0, markerHeight, markerWidth);
myItemizedOverlay = new MyItemizedOverlay(marker);
mapView.getOverlays().add(myItemizedOverlay);
GeoPoint myPoint1 = new GeoPoint((int) (user.getLatitude()*1000000), (int) (user.getLongitude()*1000000));
myItemizedOverlay.addItem(myPoint1, "myPoint1", "myPoint1");
} else {
Drawable marker1=getResources().getDrawable(android.R.drawable.star_big_on);
int markerWidth1 = marker1.getIntrinsicWidth();
int markerHeight1 = marker1.getIntrinsicHeight();
marker1.setBounds(0, 0, markerHeight1, markerWidth1);
myItemizedOverlay = new MyItemizedOverlay(marker1);
mapView.getOverlays().add(myItemizedOverlay);
GeoPoint myPoint2 = new GeoPoint((int) (user.getLatitude()*1000000), (int) (user.getLongitude()*1000000));
myItemizedOverlay.addItem(myPoint2, "myPoint2", "myPoint2");
}
}
listView.setAdapter(adapter);
}
И это мой LazyAdapter class
.
public class LazyAdapter extends BaseAdapter {
private Activity activity;
private String[] data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
private User userList;
public LazyAdapter(Activity a, String[] d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public LazyAdapter(Activity b, String[] mStrings, User user) {
activity = b;
data=mStrings;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
userList = user;
}
public int getCount() {
return data.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.item, null);
TextView text=(TextView)vi.findViewById(R.id.text);
TextView text1=(TextView)vi.findViewById(R.id.text1);
ImageView image=(ImageView)vi.findViewById(R.id.image);
text.setText("Name: " +userList.getFirstName()+" "+userList.getLastName());
text1.setText("Gender: " +userList.getGender());
imageLoader.DisplayImage(data[position], image);
return vi;
}
}
И это XML для показа user's list
- мне нужно, чтобы показать User's Full Name
на один TextView
и Gender
на второй TextView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image"
android:layout_width="50dip"
android:layout_height="50dip" android:src="@drawable/stub" android:scaleType="centerCrop"/>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" android:layout_gravity="left|center_vertical" android:textSize="20dip" android:layout_marginLeft="10dip"/>
<TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" android:layout_gravity="left|center_vertical" android:textSize="20dip" android:layout_marginLeft="10dip"/>
</LinearLayout>
И это то, что я получаю в моем Emulator- показывающем пользователя дважды в моем списке, почему это так? Но это должно быть One user information
на top
и second user information
ниже этого.
Ваш 'переменная userList' использовать по каждому пункту в списке представляет только одного пользователя , Вам нужен список пользователей (полный «ответ» вы получаете в 'onPostExecute'). – zapl
Можете ли вы показать мне пример того, как это будет работать, как вы сказали сейчас. Тем самым я могу это понять очень хорошо. Благодарю. – ferhan