2015-07-08 3 views
0

Я хочу создать простой ListView с 2 textview. Исходный класс: https://github.com/thest1/LazyList/blob/master/src/com/fedorvlasov/lazylist/LazyAdapter.javaНе удается решить метод getLayoutInflater

Но у меня есть большая проблема: я работаю над фрагментом, а не с деятельностью. Поэтому я адаптирую код.

Теперь у меня есть ошибка в классе ListViewAdapter (это не мой основной класс):

LayoutInflater inflater = context.getLayoutInflater(); 

«Не удается разрешить метод„getLayoutInflater()“

import android.app.Activity; 
import android.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

import com.pack.pack.R; 

public class ListViewAdapter extends BaseAdapter 
{ 
    Fragment context; 
    String title[]; 
    String description[]; 

    public ListViewAdapter(Fragment context, String[] title, String[] description) { 
     super(); 
     this.context = context; 
     this.title = title; 
     this.description = description; 
    } 

    public int getCount() { 
     // TODO Auto-generated method stub 
     return title.length; 
    } 

    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    private class ViewHolder { 
     TextView txtViewTitle; 
     TextView txtViewDescription; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     // TODO Auto-generated method stub 
     ViewHolder holder; 
     LayoutInflater inflater = context.getLayoutInflater(); 

     if (convertView == null) 
     { 
      convertView = inflater.inflate(R.layout.simplerow, null); 
      holder = new ViewHolder(); 
      holder.txtViewTitle = (TextView) convertView.findViewById(R.id.textView1); 
      holder.txtViewDescription = (TextView) convertView.findViewById(R.id.textView2); 
      convertView.setTag(holder); 
     } 
     else 
     { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.txtViewTitle.setText(title[position]); 
     holder.txtViewDescription.setText(description[position]); 

     return convertView; 
    } 

} 

Я прочитал, что не работает в . BaseAdapter Как мы можем это сделать Спасибо

EDIT:. Мой ListView класс

import android.app.Activity; 
import android.app.Fragment; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 


public class commu extends Fragment { 

    public static final String TAG = "commu"; 

    ListView lview; 
    ListViewAdapter lviewAdapter; 

    private final static String month[] = {"January","February","March","April","May", 
      "June","July","August","September","October","November","December"}; 

    private final static String number[] = {"Month - 1", "Month - 2","Month - 3", 
      "Month - 4","Month - 5","Month - 6", 
      "Month - 7","Month - 8","Month - 9", 
      "Month - 10","Month - 11","Month - 12"}; 


    @Nullable 
    //@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 


     View rootView = inflater.inflate(R.layout.commu, container, false); 

     lview = (ListView) rootView.findViewById(R.id.listView); 
     lviewAdapter = new ListViewAdapter(this, month, number); 

     //System.out.println("adapter => "+lviewAdapter.getCount()); 

     lview.setAdapter(lviewAdapter); 

     //lview.setOnItemClickListener(this); 


     return rootView; 
    } 

    /*public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) { 
     // TODO Auto-generated method stub 
     //Toast.makeText(this,"Title => "+month[position]+"=> n Description"+number[position], Toast.LENGTH_SHORT).show(); 
    }*/ 

    @Override 
    public void onResume() 
    { 
     super.onResume(); 
     //wv6.onResume(); 
    } 
    @Override 
    public void onPause() 
    { 
     super.onPause(); 
     //wv6.onPause(); 
    } 


} 

ответ

8

вы можете использовать

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
+0

Это не работает 'Не удается разрешить метод getSystemService (java.Lang.String)' – Argardor

+0

чувак, вызывающий контекст «Фрагмент», фрагмент не является контекстом – tyczj

+0

Да, но если я использую Activity, у меня есть ошибка в 'lviewAdapter = новый ListViewAdapter (это, месяц, число);' в моем классе listView (я отредактировал свой первый пост) – Argardor

4

Использование LayoutInflater.from(Context). Не забудьте передать экземпляр Activity в метод.

+0

Если я использую действие контекста в 'this.context = context;'. Студия Android говорит: «Найдено: Фрагмент требуемой активности». Если я делаю все в Activity, у меня есть ошибка в 'lviewAdapter = new ListViewAdapter (это, месяц, число);' в мой класс ListView (я отредактировал свой первый пост) – Argardor

+2

Для ссылки на Activity from the Fragment используйте getActivity() – Egor

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