Задать вопрос
@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();
    }
}
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя Денис Загаевский К ответам на вопрос (1)
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
не использовать ArrayAdaper и стандартные лэйауты. Написать свой адаптер. В него передавать список объектов со свойствами text и enabled. В методе создания вьюхи выставлять соответствующее свойства.

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