Возможно ли это, если пользователь нажмет на элемент списка, тогда он должен быть направлен на отдельный макет, содержащий cardsViews для нескольких TextViews - PullRequest
0 голосов
/ 31 декабря 2018

Эй, ребята, я инициализировал представление списка в моем приложении для цитат Android.Теперь я хочу, чтобы когда пользователь записывал, например, цитаты жизни, тогда все цитаты жизни должны отображаться на cardView отдельно.Я не знаю, как показать каждую цитату на каждой карточке. Пожалуйста, направьте меня на правильный путь, я буду очень благодарен.

это действие с цитатами, откуда я иду на все другие действия

public class QoutesActivity extends AppCompatActivity {

private ListView listView;

// Listview Adapter
ArrayAdapter<String> adapter;


String[] listItems = {

        "Happiness Quotes",
        "Attitude Quotes",
        "Anniversary Quotes",
        "Life Quotes",
        "Alone Quotes",
        "Strength Quotes",
        "Patriotism Quotes" ,
        "Hope Quotes" ,
        "Inspirational Quotes" ,
        "Independence Quotes" ,
        "Childhood Quotes" ,
        "Trust Quotes",
        "Selfie Quotes",
        "Birthday Quotes" ,
        "Knowledge Quotes" ,
        "Love Quotes" ,
        "Nature Quotes"
};

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_qoutes);

    listView =  findViewById(R.id.list_view);


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(QoutesActivity.this,
            android.R.layout.simple_list_item_1,listItems) {

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // Get the current item from ListView
            View view = super.getView(position, convertView, parent);

            // Get the Layout Parameters for ListView Current Item View
            ViewGroup.LayoutParams params = view.getLayoutParams();

            // Set the height of the Item View
            params.height = 180;
            view.setLayoutParams(params);

            return view;

        }

    };
    listView.setAdapter(adapter);


    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            String itemValue = (String) listView.getItemAtPosition(position);

            if (position == 0) {
                //code specific to first list item
                Intent myIntent = new Intent(view.getContext(), HappinessActivity.class);

                startActivityForResult(myIntent, 0);
            }else if (position == 1){

                Intent myIntent = new Intent(view.getContext(), AttitudeActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 2){
                Intent myIntent = new Intent(view.getContext(), AnniversaryActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 3){
                Intent myIntent = new Intent(view.getContext(), LifeActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 4){
                Intent myIntent = new Intent(view.getContext(), AloneActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 5){
                Intent myIntent = new Intent(view.getContext(), StrengthActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 6){
                Intent myIntent = new Intent(view.getContext(), PatriotismActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 7){
                Intent myIntent = new Intent(view.getContext(), HopeActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 8){
                Intent myIntent = new Intent(view.getContext(), InspitationalActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 9){
                Intent myIntent = new Intent(view.getContext(), IndependenceActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 10){
                Intent myIntent = new Intent(view.getContext(), ChildhoodActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 11){
                Intent myIntent = new Intent(view.getContext(), TrustActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 12){
                Intent myIntent = new Intent(view.getContext(), SelfieActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 13){
                Intent myIntent = new Intent(view.getContext(), BirthdayActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 14){
                Intent myIntent = new Intent(view.getContext(), KnowledgeActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 15){
                Intent myIntent = new Intent(view.getContext(), LoveActivity.class);
                startActivityForResult(myIntent, 0);
            }else if (position == 16){
                Intent myIntent = new Intent(view.getContext(), NatureActivity.class);
                startActivityForResult(myIntent, 0);
            }
        }
    });

}

}

и это этот XML-файл

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layercontainer"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg3">

<ListView
    android:id="@+id/list_view"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

1 Ответ

0 голосов
/ 31 декабря 2018

По моему честному мнению, имея слишком много операторов if, которые в основном подтверждают позицию, я бы подумал заменить.Видите ли, я не буду говорить, что это неправильно делать просто потому, что это работает, и это важная часть программирования, так как вам нужно, чтобы ваши основные требования работали.Однако, если вы можете сократить строки кода, которые вы использовали, чтобы он работал, еще лучше!Это именно то, что отличает атрибуты между разными программистами;люди, которые смотрят на проблему с другой точки зрения.Основная причина, по которой я бы порекомендовал вам заменить функциональность, которая является более масштабируемой и пригодной для будущего, заключается в том, что если вы хотите что-то изменить в этом коде, у вас будет всего несколько строк для изменения вместо 50+ строк (поверьте мнестановится сложнее, поскольку ваше приложение становится сложным).

При этом, сделайте новое действие (назовите его как угодно), я назову его userChoiceActivity в данном случае.

В вашей текущей деятельности:

 @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            String itemValue = (String) listView.getItemAtPosition(position);
            Intent intent = new Intent(view.getContext(), userChoiceActivity.class);
            intent.putExtra("userChoice", itemValue);
            startActivity(intent);
}

Далее в вашем userChoiceActivity классе вам необходимо получить эти значения в методе onCreate .

String userChoice;
if (savedInstanceState == null) {
    Bundle extras = getIntent().getExtras();
    if(extras == null) {
        userChoice = null;
    } else {
        userChoice = extras.getString("userChoice");
    }
} else {
    userChoice = (String) savedInstanceState.getSerializable("userChoice");
}

Теперь у вас должно быть то, что пользователь выбрал из списка в переменной userChoice во втором действии ( userChoiceActivity ).Отсюда вы можете использовать несколько операторов if , чтобы определить, какой массив данных вы будете использовать для заполнения своего списка переработчиков.В обзоре утилизатора есть бесконечные учебники в Интернете, но вы можете попробовать использовать следующее: -

Учебник по Android RecyclerView и CardView

...