2

У меня есть просмотр списка с помощью адаптера bade, который на самом деле является статичным, каждый из которых содержит 2 текстовых вида, а изображение - проблема. Я попытался поместить его в фрагмент в действии, он отлично работает но положили его в классе фрагмента он дает мне ошибки строка содержит намерение другой деятельности, но намерение дает ошибку, а также установки 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(com.example.hp.memorybackup.consulterfragment,java.lang.class<com.example.hp.memorybackup.notedetails>)

я действительно apreciate вашей помощи

+0

Используйте 'getActivity()' вместо 'this' –

ответ

3

В onCreateView вы звоните

list.setAdapter(new SanaAdapter(this)); 

Но правильно будет

list.setAdapter(new SanaAdapter(getActivity()); 

Также должно быть освещено, не так ли? Фрагмент расширяет объект, он не является дочерним элементом контекста.

Смежные вопросы