我需要将姓名和姓氏打印到列表视图。我设置了 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。然后将适配器设置为"创建时的列表视图"。