android - fragment 内带有基本适配器的 ListView

标签 android listview android-intent android-fragments android-activity

我有一个带有 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/

相关文章:

java - 根据视频长度倒计时器

android - 如何在 Android 操作栏上设置菜单项的样式

java - 如何从 Activity B 调用包含 Intent 的函数(在 Activity A 中)

C# - 在表单上格式化 ListView 控件的常用方法?

android - 如何使用 Intent 启动添加联系人 Activity ?

android - Realm 模型类必须扩展 RealmObject 或实现 RealmModel 才能被视为有效的模型类

android - 如何在不使用自定义适配器的情况下将子项添加到 ListView

android - 如何将 setTag 和 getTag 与自定义适配器一起使用

android - ACTION_CALL 在 Nexus/Android 4.3 上作为 ACTION_DIAL 用于以 08 开头的数字

java - Whatsapp 共享在 Webview 中不起作用