2015-09-15 2 views
0

это моя страница фрагмент, я пытаюсь создать ListViewЯ использую ListView, у меня есть ошибка в классе адаптера

public class MessagesFragment extends Fragment { 
    ArrayList<String> brands= new ArrayList<String>(); 

    //String[] brands = {"Android","IPhone","WindowsMobile","Blackberry","WebOS","Ubuntu","Windows7","Max OS X"}; 
    public MessagesFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_messages, container, false); 


     brands.add("microsoft"); 
     brands.add("ios"); 
     brands.add("android"); 
     AdapterListView adapter = new AdapterListView(brands,getActivity()); 

     ListView listView = (ListView)rootView.findViewById(R.id.mobile_list); 
     listView.setAdapter(adapter); 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_messages, container, false); 
    } 
} 

это мой адаптер класса

public class AdapterListView extends BaseAdapter { 
    Context context; 
    ArrayList<String> brands; 

    public AdapterListView(ArrayList<String> brands, Context context) { 
     this.brands = brands; 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return brands.size(); 
    } 

    @Override 
    public Object getItem(int i) { 
     return null; 
    } 

    @Override 
    public long getItemId(int i) { 
     return 0; 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 

     view= LayoutInflater.from(context).inflate(R.layout.activity_listview,null); 
     ListView lv=(ListView)view.findViewById(R.id.mobile_list); 
     lv.getAdapter(); 

     return view; 
    } 
} 

мне нужно установить список брендов .. В настоящее время я не получаю никакого значения в списке брендов. Я думаю, что ошибка в последнем разделе класса адаптера

+0

вставьте activity_listview.xml здесь .. и где вы настраиваете данные в виде списка строки ?? –

ответ

5

вы должны return rootView; в вашем onCreateView методе вашего MessagesFragment

вместо

return inflater.inflate(R.layout.fragment_messages, container, false); 
1

Как сказал @Rustam в своем ответе вы должны вернуться rootView оттуда. я думаю, что должно быть еще несколько изменений в getview() вашего класса адаптера, как ..

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 

    view= LayoutInflater.from(context).inflate(R.layout.activity_listview,null); 
// layout.activity_listview should be your custom row layout with textview 
// find the TextView of your custom row and set data on it,, 
    TextView tv = (TextView) view.findViewById(R.id.yourTextview); 
    tv.setText(brands.get(i)); 

    return view; 
} 
+0

public View getView (int i, View view, ViewGroup viewGroup) { view = LayoutInflater.from (context) .inflate (R.layout.activity_listview, null); ListView lv = (ListView) view.findViewById (R.id.mobile_list); lv.setText (brands.get (i)); вид возврата; } – user3409897

+0

, когда я получил это сообщение, является ошибкой в ​​setText (невозможно разрешить метод settext-lang.string) – user3409897

+0

, потому что вы не можете установить текст в виде списка, вам нужно сделать другой макет (содержащий текстовое представление) для вашей настраиваемой строки, которая вам нужна который будет добавлен в ваш просмотр списка .. в вашем методе getview(), где вы разместили 'R.layout.activity_listview' .. и вам нужно изменить вид списка в адаптере, как я указал в своем ответе ,, –

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