2013-04-01 4 views
0

У меня есть активность, в которой я хочу показать ListView как datagrid. arraylist ITransducer [] является динамическим, и я хочу использовать arraylist для создания столбцов listview.Может ли динамическая динамика создания списка ListView быть запрограммирована программно

ListView

ITransducer1 | ITransducer2 | ITransducer3

aa1 | aa2 | aa3

У меня был переопределенный метод getView(), но мне нужно загрузить макет для listview следующим образом: view = vi.inflate (R.layout.historical_data_details_item, null);

Могу ли я генерировать динамику раскладки списка с помощью ITransducer []?

public class HistoricalDataDetailsActivity extends Activity { 
ListView lvDetails; 
Context context; 
IDAL idal; 
TransducerFactory tFactory; 

@Override 
protected void onCreate(Bundle savedInBundleState) { 
    super.onCreate(savedInBundleState); 
    setContentView(R.layout.historical_data_details); 
    context = this; 
    tFactory = new TransducerFactory(); 
    lvDetails = (ListView) findViewById(R.id.lvDetails); 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    ITransducer[] its = new ITransducer[]{ 
     new AbsTransducer("aa1", TransducerType.AirPressure), 
     new AbsTransducer("aa2", TransducerType.AirPressure), 
     new AbsTransducer("aa3", TransducerType.Temperature) 
    }; 

// ListViewItemAdapter адаптер = новый ListViewItemAdapter (это, R.layout.historical_data_details_item, его); // lvDetails.setAdapter (адаптер); }

class ListViewItemAdapter extends ArrayAdapter<ITransducer>{ 
    boolean HasHeader = false; 

    public ListViewItemAdapter(Context context, int textViewResourceId, ITransducer[] objects){ 
     super(context, textViewResourceId, objects); 

    } 

    public View getView(int position, View convertView, ViewGroup parent){ 
     View view = convertView; 
     if(view == null){ 
      LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = vi.inflate(R.layout.historical_data_details_item, null); 

      TextView tvDate = new TextView(context); 
      tvDate.setLayoutParams(new ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT)); 
      tvDate.setText("DateTime"); 

      LinearLayout layout = (LinearLayout) view.findViewById(R.id.tLayout); 
      layout.addView(tvDate); 
      view = layout; 

     }else 
      view = convertView; 

     return view; 
    } 
} 

}

+0

Вы хотите показать aa1 | aa2 | aa3 как coloums? – Ankit

+0

да, но столбцы динамические по таблице sqlite – Whistler

ответ

0
@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if (aa1!= null) { 
      holder.aa1_tv.setText(aa1.getName()); 
     } 
     if (aa2!= null) { 
      holder.aa2_tv.setText(aa2.getName()); 
     } 
     if (aa3!= null) { 
      holder.aa3_tv.setText(aa3.getName()); 
     } 
} 

здесь aa1/aa2/aa3 являются объектом, представляющим колонки класса, которые вы можете инициализировать с базой данных.

+0

привет Ankit, да aa1, aa2, aa3 - объекты класса, представляющие столбцы, но количество столбцов таблицы sqlite - dynamic.it может быть aa1/aa2/aa3/aa4/aa5 или aa1/aa2, я не знаю, сколько объектов столбцов есть – Whistler

+0

нормально, поэтому в основном он будет прокручиваться в горизонтальном направлении, я прав? Что о количестве строк? – Ankit

+0

привет Анкит, большое вам спасибо за ваш ответ. Я нашел решение с http://stackoverflow.com/questions/5730035/cursoradapter-slow-jerky-scroll – Whistler

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