1

オブジェクトの「名前」データを検索リストに入力しようとしています。次に、オブジェクトをクリックして、オブジェクトを次のアクティビティに送信できるようにしたいと考えています。文字列のみを使用して動作させましたが、オブジェクトではあらゆる種類のエラーが発生します。誰もこれを解決する方法について考えを持っていますか? ここまでのコードです。

public class SearchActivity extends Activity
{
    public final static String sampleObject = "no.uib.nutritionapplication.dene";
    private ListView list;
    private EditText edText;
    private ArrayList<FoodItem> array_sort= new ArrayList<FoodItem>();
    int textlength = 0;   

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);

    ArrayList<FoodItem> foodList = new ArrayList<FoodItem>();

    FoodItem orange_juice = new FoodItem("Orange juice", 10, 2, 100, 140, "Orange juice from concentrate");
    FoodItem bread = new FoodItem("Bread", 12, 5, 150, 160, "Whole grain bread");
    FoodItem jarlsberg = new FoodItem("Jarlsberg cheese", 8, 8, 130, 180, "Jarlsberg cheese");

    foodList.add(orange_juice);
    foodList.add(bread);
    foodList.add(jarlsberg);

    list = (ListView) findViewById(R.id.ListView01);
    edText = (EditText) findViewById(R.id.EditText01);
    list.setAdapter(new ArrayAdapter<FoodItem>(this, android.R.layout.simple_list_item_1, foodList));

    list.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View itemClicked, int position,
                long rowId) {

            Intent intent = new Intent(SearchActivity.this, AddMealActivity.class);

            TextView textView = (TextView) itemClicked;  
            FoodItem message = textView.getName().toString();  

            intent.putExtra("sampleObject", message);
            startActivity(intent);

        }
    });


    edText.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s){
            // Abstract Method of TextWatcher Interface.
        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // Abstract Method of TextWatcher Interface.
        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {
            textlength = edText.getText().length();
            array_sort.clear();

            for (int i = 0; i < foodList.length; i++) {
                if (textlength <= foodList.getName()[i].length()) {
                    if(edText.getText().toString().equalsIgnoreCase((String)foodList.getName()[i].subSequence(0,textlength))){
                        array_sort.add(foodList.getName()[i]);
                    }
                }
            }

            list.setAdapter(new ArrayAdapter<String>(SearchActivity.this,android.R.layout.simple_list_item_1, array_sort));
            }
        }
    );


    }

}
4

1 に答える 1

0

これには独自のアダプターを作成する必要があります。

詳細については、次のチュートリアルをご覧ください: http://www.vogella.com/articles/AndroidListView/article.html

public class MySimpleArrayAdapter extends ArrayAdapter<FoodItem> {
    private final Context context;
    private final ArrayList<FoodItem> values;

    public MySimpleArrayAdapter(Context context, ArrayList<FoodItem> values) {
        super(context, R.layout.YOURLAYOUT, values);
        this.context = context;
        this.values = values;
      }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater).getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.YOURLAYOUT, parent, false);

        TextView textView = (TextView) rowView.findViewById(R.id.label);
        textView.setText(values.get(position).NAMEOFFOOD);

        return rowView;
    }
}
于 2012-10-22T12:45:07.307 に答える