Android передает массив из действия в класс customadapter - PullRequest
0 голосов
/ 28 февраля 2011

В MainAcitivty.java я заполняю Arraylist элементами. Мне нужны эти элементы в моем классе customadapter, потому что они нужны для установки цвета определенных строк в текстовом представлении.

У меня есть динамический массив: storage [], размер которого устанавливается во время процесса:

 storage = new int[db];

Этот массив содержит следующие элементы, например: 35,56,67

Массив "myArr3" содержит те же элементы, но тип элементов - строка.

Это определение массива myArr3:

  ArrayList<String> myArr3 = new ArrayList<String>();

Я ищу решение для управления этими элементами в другом классе, будь то массив целочисленных типов или массив строковых типов.

В MyCustomBaseAdapter2.java я установил макет Адаптера:

package com.bfarago.nevnap;

import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class MyCustomBaseAdapter2 extends BaseAdapter {
     private static ArrayList<SearchResults> searchArrayList;

 private LayoutInflater mInflater;

 public MyCustomBaseAdapter2(Context context, ArrayList<SearchResults> results) {
  searchArrayList = results;
  mInflater = LayoutInflater.from(context);
 }

public MyCustomBaseAdapter2(OnClickListener onClickListener,
        ArrayList<SearchResults> searchResults) {
    // TODO Auto-generated constructor stub
}

public int getCount() {
  return searchArrayList.size();
 }

 public Object getItem(int position) {
  return searchArrayList.get(position);
 }

 public long getItemId(int position) {
  return position;
 }

 public View getView(int position, View convertView, ViewGroup parent) {
  ViewHolder holder;
  if (convertView == null) {
   convertView = mInflater.inflate(R.layout.row2, null);
   holder = new ViewHolder();


       holder.txtName = (TextView) convertView.findViewById(R.id.left);
       holder.txtCityState = (TextView) convertView.findViewById(R.id.right);


   convertView.setTag(holder);
  } else {
   holder = (ViewHolder) convertView.getTag();
  }

  holder.txtName.setText(searchArrayList.get(position).getName());
  holder.txtCityState.setText(searchArrayList.get(position).getCityState());



  return convertView;
 }

static class ViewHolder {
  TextView txtName;
  TextView txtCityState;

 }
}

Ответы [ 2 ]

0 голосов
/ 06 сентября 2011

Решение заключается в использовании намерений для передачи массива из одного действия в другое.

Ответ можно найти в this

0 голосов
/ 28 февраля 2011

Вы можете изменить целочисленный массив на строку ArrayList, а затем использовать ArrayList в своем Adapter

. Вы можете изменить свой целочисленный массив на строковый массив, например

 int storage [] = new int[db];
 int stringstorage[] = new String[db];
 for (int i = 0; i < db; i++) {
 stringstorage[i] =storage[i] ;
}

Теперь измените stringstorage на ArrayList

  List<String> l = Arrays.asList(stringstorage);
  ArrayList<String> list = new ArrayList<String>(l);

Теперь используйте list как вам нужно.

Надеюсь, это поможет вам.

...