我有一个带有 bade 适配器的 ListView ,它实际上是一个静态 View ,每行包含 2 个 TextView 和一个图像,问题是我试图将其放入 Activity 中的 fragment 中,它工作得很好,但确实将其放入了 fragment 类它给了我错误该行包含对另一个 Activity 的 Intent ,但该 Intent 给出了一个错误并且还将adpater设置为 ListView 给出了另一个错误 这是代码:
public class consulterfragment extends Fragment implements AdapterView.OnItemClickListener {
ListView list;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.consulter_fragment_layout,container,false) ;
list= (ListView) view.findViewById(R.id.listView);
list.setAdapter(new SanaAdapter(this));
list.setOnItemClickListener(this);
return view;
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(this, note_details.class);
startActivity(intent);
MyViewHolder holder = (MyViewHolder) view.getTag();
SingleRow temp = (SingleRow) holder.myImage.getTag();
intent.putExtra("titles", temp.titles);
startActivity(intent);
}
class SingleRow {
String titles;
String description;
int image;
SingleRow(String titles, String description, int image) {
this.titles = titles;
this.description = description;
this.image = image;
}
}
class MyViewHolder {
ImageView myImage;
TextView myTitle;
TextView myDescription;
MyViewHolder(View v) {
myImage = (ImageView) v.findViewById(R.id.imageView2);
myTitle = (TextView) v.findViewById(R.id.textView4);
myDescription = (TextView) v.findViewById(R.id.textView5);
}
}
class SanaAdapter extends BaseAdapter {
ArrayList<SingleRow> list;
Context context;
SanaAdapter(Context c) {
context = c;
list = new ArrayList<SingleRow>();
Resources res = c.getResources();
String[] titles = res.getStringArray(R.array.titles);
String[] descriptions = res.getStringArray(R.array.decriptions);
int[] images = {R.drawable.ico1, R.drawable.ico2, R.drawable.ico3, R.drawable.ico4, R.drawable.ico5, R.drawable.ico6, R.drawable.ico7, R.drawable.ico8,
R.drawable.ico9, R.drawable.ico10, R.drawable.ico1, R.drawable.ico2, R.drawable.ico3, R.drawable.ico4, R.drawable.ico5, R.drawable.ico6, R.drawable.ico7, R.drawable.ico8,
R.drawable.ico9, R.drawable.ico10};
for (int i = 0; i < 10; i++) {
list.add(new SingleRow(titles[i], descriptions[i], images[i]));
}
}
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View convertview, ViewGroup viewGroup) {
View row = convertview;
MyViewHolder holder = null;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.notelist_row, viewGroup, false);
holder = new MyViewHolder(row);
row.setTag(holder);
Log.d("SANA", "Creating a new row");
} else {
holder = (MyViewHolder) row.getTag();
Log.d("SANA", "Recycling shit hhhhhh");
}
SingleRow temp = list.get(i);
holder.myTitle.setText(temp.titles);
holder.myDescription.setText(temp.description);
holder.myImage.setImageResource(temp.image);
return row;
}
}
}
第一个错误是在设置适配器时
它说SanaAdapter(android.context.Context)
在SanaAdapter
无法申请
第二个错误在于它所说的 Intent
无法解析构造函数Intent(com.example.hp.memorybackup.consulterfragment,java.lang.class<com.example.hp.memorybackup.notedetails>)
我真的很感谢你的帮助
最佳答案
在 onCreateView 中您正在调用
list.setAdapter(new SanaAdapter(this));
但正确的是
list.setAdapter(new SanaAdapter(getActivity());
还应该突出显示,不是吗? Fragment 扩展了 Object,它不是 Context 的子级。
关于android - fragment 内带有基本适配器的 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475133/