Редактировать содержимое текстового поля в ListView на Android после нажатия кнопки - PullRequest
2 голосов
/ 23 ноября 2011

Хотелось бы узнать, может ли кто-нибудь помочь мне разобраться, как добавить содержимое поля EditText в список ListView на Android. У меня есть проект, над которым я работаю, использующий сканер штрих-кода для сканирования штрих-кода и возврата результатов в поле EditText.

Я сейчас пытаюсь закодировать содержимое поля EditText с помощью кнопки, чтобы добавить содержимое в список либо в рамках этого действия, либо в другом. Я рассмотрел простой пример списка заметок и пару других примеров, однако, когда я пытаюсь реализовать некоторые из тех же концепций, я не понимаю, где, или я думаю, что я где-то, но код ничего не делает. Мне жаль, что поздно .. я не спал всю ночь, пытаясь понять это ... Любая помощь, совет, очень и всегда ценится ...

package com.terrellmcqueen.databaseproject474;

import java.util.ArrayList;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class Main extends Activity implements OnClickListener {
    private static final int REQUEST_BARCODE = 0;
    private TextView mBarcodeEdit;
    private TextView mScanButton;

    // private fields omitted

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mBarcodeEdit = (EditText) findViewById(R.id.myEditText);
        mScanButton = (Button) findViewById(R.id.scanButton);
        mScanButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.scanButton:
                Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                intent.putExtra("SCAN_MODE", "SCAN_MODE");
                startActivityForResult(intent, REQUEST_BARCODE);
                break;
        }
     }

     public void onClick1(View v) {
         switch (v.getId()) {
             case R.id.btnSimple:    
                 ListView myListView = (ListView) findViewById(R.id.myListView);
                 final EditText myEditText = (EditText) findViewById(R.id.myEditText);        
                 final ArrayList<String> noteList = new ArrayList<String>();
                 final ArrayAdapter<String> aa;

                 // binding an array of Strings 
                 aa = new ArrayAdapter<String>(this, 
                         android.R.layout.simple_list_item_1,noteList);

                 // here we set the adapter, this turns it on
                 myListView.setAdapter(aa);

                 // here is the button
                 // Button btnSimple = (Button) findViewById(R.id.btnSimple);

                 //  String barcode = mBarcodeEdit.getText().toString();

                 //  String title = mTitleEdit.getText().toString();
                 //  String price = mPriceEdit.getText().toString();
            }
      }

    public void onActivityResult(int requestCode,int resultCode, Intent intent) {
        if (requestCode == REQUEST_BARCODE) {
            if (resultCode == RESULT_OK) {
                String barcode = intent.getStringExtra("SCAN_RESULT");
                mBarcodeEdit.setText(barcode);
            } else if (resultCode == RESULT_CANCELED) {
                finish();
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Я немного изменил код, и он работает в соответствии с вашими требованиями, пожалуйста посмотрите на тот же

package com.barcode;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class BarcodeActivity extends Activity implements OnClickListener {
    private static final int REQUEST_BARCODE = 0;
    private TextView mBarcodeEdit;
    private Button mScanButton;
    private Button mAddButton;

    // private fields omitted

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mBarcodeEdit = (EditText) findViewById(R.id.editText1);
        mScanButton = (Button) findViewById(R.id.button1);
        mAddButton = (Button) findViewById(R.id.add);
        mScanButton.setOnClickListener(this);
        mAddButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.putExtra("SCAN_MODE", "SCAN_MODE");
            startActivityForResult(intent, REQUEST_BARCODE);
            break;
        case R.id.add:
            ListView myListView = (ListView) findViewById(R.id.listView1);
            final EditText myEditText = (EditText) findViewById(R.id.editText1);
            final ArrayList<String> noteList = new ArrayList<String>();
            noteList.add(myEditText.getText().toString());
            final ArrayAdapter<String> aa;

            // binding an array of Strings
            aa = new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1, noteList);

            // here we set the adapter, this turns it on
            myListView.setAdapter(aa);
            break;
        }
    }

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == REQUEST_BARCODE) {
            if (resultCode == RESULT_OK) {
                String barcode = intent.getStringExtra("SCAN_RESULT");
                mBarcodeEdit.setText(barcode);
            } else if (resultCode == RESULT_CANCELED) {
                finish();
            }
        }
    }
}
1 голос
/ 23 ноября 2011

В событии нажатия кнопки добавьте текст editText в список, используемый для заполнения ListView и вызовите notifyDataSetChanged () вашего ArrayAdapter.Надеюсь, это сработает.

noteList.add(mBarcodeEdit.getText());
aa.notifyDataSetChanged();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...