Нужна помощь в понимании элемента Cardview click - PullRequest
1 голос
/ 27 октября 2019

Во-первых, я должен сказать вам, что у меня очень ограниченный опыт программирования на Android. По сути, я взял книгу и попробовал самообразование с ограниченным успехом. :( Короче говоря, я хочу, чтобы при нажатии

я мог открывать второе действие с подробной информацией об элементе карты. Я много раз искал в сети, чтобы найти информацию, или учебное пособие по выбору одного элемента измакет ресервлера / карты, но я не нашел ничего, что я мог бы сделать.

В настоящее время у меня есть щелчок в моем xml карты (android: onClick = "displaycard"), который будет запускать метод displaycard () вjava class.

Это работает нормально, но только выводит меня на общее действие отдельного элемента. Я могу искать в базе данных по itemID один раз в упражнении, используя поле поиска и кнопку, но я хотел бы заполнить действиес помощью кнопки просмотра карты нажмите

Это представление карты с элементом onclick в нем ...

    <androidx.cardview.widget.CardView
        android:id="@+id/CardItem"
        android:layout_marginBottom="@dimen/cardview_compat_inset_shadow"
        android:layout_margin="@dimen/cardview_compat_inset_shadow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:backgroundTint="#0066ff"
        android:clickable="true"
        android:focusable="true"
        android:onClick="displaycard"
        app:cardCornerRadius="12dp"
        app:cardElevation="30dp"
        android:outlineSpotShadowColor="@color/colorPrimaryDark">

Ниже приведен метод, который открывает общее действие. Общее значение означает действие безсодержимое базы данных заполнено

public void displaycard(View view) {
  Intent defView = new Intent(SecondActivity.this,DisplayIndividual.class);
// this is where i pass the search parameters to DisplayIndividual.java     (search parameter is Tk-128, putExtra passes it to the activity)
    // I want to be able to pass the ID of the card that was clicked
    String strSearch = "Tk-128";
    defView.putExtra("STRING_2_Search", strSearch);
    startActivity(defView);
    }

У каждого просмотра карты есть текстовое представление с идентификатором, который я хотел бы найти. I wмуравей для передачи 'android: id = "@ + id / ConfinedSpaceID" "с помощью putExtra в открытое действие. В приведенном выше примере я хотел бы заменить значение «Tk-128» значением android: id = «@ + id / ConfinedSpaceID» для элемента просмотра карты, по которому щелкнули.

<TextView
android:id="@+id/ConfinedSpaceID"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="Confined Space ID"
android:textColor="@android:color/white"
android:textSize="22sp"
android:textStyle="bold" />

Не уверенесли я объяснил себе ясно ... надеюсь, я дал достаточно информации, чтобы повторить проблему

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Проблема решена - весь ваш вклад научил меня о getContext (). Это, конечно, то, что мне нужно, чтобы начать деятельность в классе Java. Спасибо всем

0 голосов
/ 27 октября 2019

Если у вашего просмотра карты только один TextView, или если ваше значение всегда находится в первом TextView, это должно работать:

public void displaycard(CardView view) {
        String strSearch;
        for(int i=0;i<view.getChildCount();i++){
            View maybeTextView = view.getChildAt(i);
            if(maybeTextView instanceof TextView){
                strSearch=((TextView)maybeTextView).getText().toString();
                break;
            }

        }
        Intent defView = new Intent(SecondActivity.this,DisplayIndividual.class);

        defView.putExtra("STRING_2_Search", strSearch);
        startActivity(defView);
    }

Что он делает, он просматривает все дочерние представления в CardViewи когда он находит TextView, он сохраняет свое значение в переменной, которую вы затем можете использовать для передачи своему намерению, как вы делали это раньше. Обратите внимание, что я изменил аргумент функции с публичной void displaycard (просмотр View) на public void displaycard (просмотр CardView)

...