#android #listview #resources #android-intent #webserver
#Android #listview #Ресурсы #android-намерение #веб-сервер
Вопрос:
Я пытаюсь создать listview через ресурс, и каждый из них откроет сканер штрих-кода (используя Android integrate) и вернет результат без отображения и отправит результат данных на веб-сервер (кстати, мне удалось отправить данные на веб-сервер в виде текстового файла и хотелось бы знать, как извлечь эти данные из штрих-кода без отображения и отправить результат данных на веб-сервер в виде текстового файла). У меня возникают проблемы при попытке выполнить этот шаг. (устройство Android 1.5, проект 2.2 с sdk 3 с использованием eclipse)
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">company</string>
<string-array name="customer_service_group">
<item>Start Trip</item>
<item>Clock In</item>
<item>Customer Svc</item>
<item>Independent Inspection</item>
<item>Pick Up</item>
<item>Log Out</item>
</string-array>
</resources>
MainActivity.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
String[]Customer;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] Customer = getResources().getStringArray(R.array.customer_service_group);
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, Customer));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Intent i = new Intent("com.merrill.IntentIntegrator");
startActivityForResult(i, 1);
}
});}
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == request_Code) {
if (resultCode == RESULT_OK) {
------not sure what to put here-----
}
}
}
}
Комментарии:
1. Я забыл упомянуть, что ошибки — setListAdapter, list_item и getListView. Я не уверен, почему возникает ошибка, даже если импортировано
2. кто-нибудь может мне помочь с этим?
Ответ №1:
Вот некоторый пример кода, который должен начать получать результат от BarcodeScanner intent:
/*Here is where we come back after the Barcode Scanner is done*/
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
// contents contains whatever the code was
String contents = intent.getStringExtra("SCAN_RESULT");
// Format contains the type of code i.e. UPC, EAN, QRCode etc...
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan. In this example I just put the results into the TextView
resultsTxt.setText(format "n" contents);
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel. If the user presses 'back' before a code is scanned.
resultsTxt.setText("Canceled");
}
}
}
Редактировать: вместо этой строки
resultsTxt.setText(format "n" contents);
измените его, чтобы отправлять содержимое на ваш сервер. Если у вас есть метод, настроенный для взаимодействия с вашим сервером, тогда это будет что-то вроде
sendDataToServer(contents);
Комментарии:
1. Спасибо! Я на самом деле забыл обновить свой код этим примером и все еще ищу способ не отображать данные результата и автоматически отправлять данные на веб-сервер.
2. данные, которые были отсканированы, можно найти внутри переменной content. Вам просто нужно отправить эту строку на свой сервер. Смотрите мою правку для одного возможного способа, которым вы могли бы это настроить.
3. еще раз спасибо, Тим. Можете ли вы проверить мой код, что я мог пропустить? Я не смог скомпилировать его, поскольку есть несколько ошибок. Я все еще пытаюсь выяснить, как запустить его.