如何在安卓中使用数组适配器



我需要将姓名和姓氏打印到列表视图。我设置了 ewerything,但 ArrayAdapter 的代码是底层的。我没有看到我的错误。你可以帮我吗?

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_schedule, container, false);
    schedule_list = (ListView) view.findViewById(R.id.schedule_list);
    String[] menuItems = {"Serdar","Yazıcı"};
    //String[] listRow = new String[]{"photo","name","city"};
    int[] showList = new int[]{R.id.list_photo,R.id.list_name,R.id.list_city};
    ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String>(
            getActivity(),
            R.layout.listview_row,
            showList,
            menuItems);
    schedule_list.setAdapter(listViewAdapter);
    return view;
}

你应该尝试使用SimpleAdapter而不是ArrayAdapter!去工作确保:)

将下面给出的此示例代码用于自定义阵列适配器:

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

import java.util.ArrayList;
import de.hdodenhof.circleimageview.CircleImageView;
   /**
    * Created by Zohaib Hassan on 11/28/2016.
    */
    public class InboxAdapter extends ArrayAdapter<InboxRow> {
   ArrayList<InboxRow> items;
    Context context;

    public InboxAdapter(Context context, int resource, ArrayList<InboxRow> 
    items) {
   super(context , resource , items);
   this.context = context;
    this.items = items;
   }

   @Override
 public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
InboxRow rowItem = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
ViewHolder viewHolder; // view lookup cache stored in tag
if (convertView == null) {
    viewHolder = new ViewHolder();
    LayoutInflater inflater = LayoutInflater.from(context);
    convertView = inflater.inflate(R.layout.inbox_row, null);
    viewHolder.tvUserName = (TextView) convertView.findViewById(R.id.tv_user_name_inbox);
    viewHolder.tvMessage = (TextView) convertView.findViewById(R.id.tv_message_inbox);
    viewHolder.tvTimeCount = (TextView) convertView.findViewById(R.id.tv_time_count_inbox);
    viewHolder.userProfilePic = (CircleImageView) convertView.findViewById(R.id.inbox_profile_image);
    convertView.setTag(viewHolder);
} else {
    viewHolder = (ViewHolder) convertView.getTag();
}

/*CircleImageView ivProfileImage Set Background with Picasso*/
return convertView;
   }
   private static class ViewHolder {
     TextView tvUserName , tvMessage , tvTimeCount;
     CircleImageView userProfilePic;
 }
 }

在您的活动类中使用下面给出的示例代码:

 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ListView;

 import java.util.ArrayList;
 /**
 * Created by Zohaib Hassan on 11/28/2016.
  */
 public class InboxScreen extends Fragment {
ListView lvInbox;
ArrayList<InboxRow> inboxList;
InboxAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.inbox_screen,container,false);

    lvInbox = (ListView) v.findViewById(R.id.lv_inbox);
    inboxList = new ArrayList<InboxRow>();
    for (int a = 0 ; a < 20 ; a++)
    {
        inboxList.add(new InboxRow());
    }

    adapter = new InboxAdapter(getActivity() , R.layout.inbox_row , inboxList);
    lvInbox.setAdapter(adapter);
    return v;
}
}

不要在 ArrayAdapter 类中调用 ListView,而是在 MainActivity 中调用 ListVew 和新的 ArrayAdaper。然后将适配器设置为"创建时的列表视图"。

最新更新