@ICEY

Как сделать неактивную кнопку в простом списка из массива (ListView)?

Сделал простой массив из нескольких слов и с помощью второй активности выводил детальную информацию о них.
Мне нужно сделать одно из слов неактивные т.е не кликабельным не можете подсказать как это сделать? Вот код из первой активности (которая выводит список слов массива) и второй который отображает детальную информацию о них.
public class MainActivity extends AppCompatActivity {

    private String titles[] = {
            "00. Weapon",
            "01. Stigmata",
            "02. Recom ,"
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        
        ListView listView = findViewById(R.id.listView);
  
        listView.setAdapter(
                new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, titles));
        listView.setTextFilterEnabled(true);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, DetailActivity.class);

                intent.putExtra("title", position);

                
                startActivity(intent);
            }
        });
    }
}

Вторая активность
public class DetailActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        WebView webView = findViewById(R.id.webView);

        Intent intent = getIntent();
        
        String resName = "n" + intent.getIntExtra("title", 0);
        Log.i("name", resName);
        Context context = getBaseContext(); 

        
        String text = readRawTextFile(context, getResources().getIdentifier(resName,
                "raw", "ru.alexanderklimov.manual"));

        webView.loadDataWithBaseURL(null, text, "text/html", "en_US", null);
    }

    
    private String readRawTextFile(Context context, int resId)
    {
        InputStream inputStream = context.getResources().openRawResource(resId);

        InputStreamReader inputReader = new InputStreamReader(inputStream);
        BufferedReader buffReader = new BufferedReader(inputReader);
        String line;
        StringBuilder builder = new StringBuilder();

        try {
            while (( line = buffReader.readLine()) != null) {
                builder.append(line);
                builder.append("\n");
            }
        } catch (IOException e) {
            return null;
        }
        return builder.toString();
    }
}
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
не использовать ArrayAdaper и стандартные лэйауты. Написать свой адаптер. В него передавать список объектов со свойствами text и enabled. В методе создания вьюхи выставлять соответствующее свойства.

Для упрощения понимания выкинуть листвью, использовать RecyclerView. Он заставит делать всё правильно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы