Создать разные текстовые представления для списка строк - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть класс, который я использую камерой, чтобы указать на объект и получить все строки, которые он может видеть на объекте.Затем я передаю список в это намерение, чтобы пользователь мог выбрать конкретную строку, которую я затем буду использовать для отправки в другое действие.

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

public class SelectProductName extends AppCompatActivity {
    ArrayList<String> getString = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_select_product_name);
        getString = getIntent().getStringArrayListExtra("stringList");

        LinearLayout ll = findViewById(R.id.layout_select_product_name);
        for (int i = 0; i < getString.size();i++){
            TextView text = new TextView(this);
            text.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT));
            text.setText(getString.get(i));
            System.out.println(getString.get(i));
            ll.addView(text);
        }
    }
}

Так, например:getString is {"Chicken", "Pie"}

Я хочу, чтобы текстовое представление создавалось для каждой строки.

Я не уверен, как бы получить имя текстового представления для добавленияOnClickListener к нему.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019
public class SelectProductName extends AppCompatActivity implements OnClickListener{
ArrayList<String> getString = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_select_product_name);
    getString = getIntent().getStringArrayListExtra("stringList");

    LinearLayout ll = findViewById(R.id.layout_select_product_name);
    for (int i = 0; i < getString.size();i++){
        TextView text = new TextView(this);
        text.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT));
        text.setText(getString.get(i));
        System.out.println(getString.get(i));
        ll.addView(text);
        text.setOnClickListener(this);
    }
}
public void onClick(View view) {
    TextView tv = (TextView)view;
    Log.i("clicked", tv.getText().toString());


  }
}
0 голосов
/ 19 февраля 2019

Вы можете добавить слушателя так же, как и в любом представлении:

LinearLayout ll = findViewById(R.id.layout);
for (int i = 0; i < getString.size();i++){
    TextView text = new TextView(this);
    text.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT));
    text.setText(getString.get(i));
    System.out.println(getString.get(i));
    ll.addView(text);
    text.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // your code goes here
        }
    }); 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...