У меня возникла проблема, когда я пытаюсь получить выбранную строку из списка, чтобы что-то сделать с помощью кнопки onClickListener.Android call onActivityResult при выборе списка
В принципе, у меня есть кнопка для каждой строки списка. Когда кнопка будет выбрана, она перейдет к намерению сканирования QR-кода. Когда результат возвращался в onActivityResult(), я хотел что-то сделать с этой строкой. Это, как я настроить кнопку слушателя:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.attendee_listview_row,
null);
viewHolder = new ViewHolder();
viewHolder.txt_dName = (TextView) convertView
.findViewById(R.id.txtDisplayName);
viewHolder.btn_scan = (ImageView) convertView.findViewById(R.id.btnScan);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.txt_dName.setText(attendeeList.get(position)
.getAccountName().trim());
viewHolder.btn_scan.setOnClickListener(new OnClickListener(){
public void onClick(View v){
Intent intent = new Intent(
"com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
});
А вот onActivityResult():
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == Activity.RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
if(attendeeName.equals("Andrew") && contents.equals("QRCode1")){
}else{
Toast.makeText(context, "Event QR code does not match.",
Toast.LENGTH_LONG).show();
}
} else if (resultCode == Activity.RESULT_CANCELED) {
}
}
}
Я уже сделал, если другое заявление внутри onActivityResult, но я не уверен, как получить выбранная строка ранее.
Любые руководства?
Заранее спасибо.
ОБНОВЛЕНИЕ
Вот вид LLIST элемент строки XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants"
android:orientation="horizontal"
android:weightSum="1" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:orientation="vertical" >
<ImageView
android:id="@+id/btnScan"
android:layout_width="40dp"
android:layout_height="40dp"
android:paddingRight="10dp"
android:paddingTop="15dp"
android:src="@drawable/qr_icon" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:orientation="vertical" >
<TextView
android:id="@+id/txtDisplayName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/lightred"
android:textSize="16dp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:orientation="vertical" >
<ImageView
android:id="@+id/ivRegisteredTag"
android:layout_width="80dp"
android:layout_height="30dp"
android:paddingTop="15dp"
anddroid:visibility="gone"
android:src="@drawable/registered" />
</LinearLayout>
</LinearLayout>
Так в основном у меня есть зарегистрированное изображение для каждой строки. Затем внутри оператора if предположим, что условия согласованы, как мне нужно зарегистрированное изображение для этой строки?
Не должно быть слишком долго, потому что в моем текущем наборе данных по-прежнему не так много данных. Не могли бы вы привести мне пример? – hyperfkcb
Скажем, случай 0, и я хотел выделить фон строки. Я все еще могу это сделать? – hyperfkcb
Да, это не должно быть проблемой. Вам просто нужно очистить свой список адаптеров и снова заполнить список, после того как вы выделили элемент 0 в своем списке. – JensJensen