0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
1

Приведение TextView к своему классу

21.02.2016, 22:11. Показов 1171. Ответов 15

Author24 — интернет-сервис помощи студентам
Мой класс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyTv extends TextView{
    int place = -1;
 
    public MyTv(Context context) {
        super(context);
    }
 
 
    public void setPlace(int placeget){
        place = placeget;
    }
 
    public int getPlace(){
        return place;
    }
}

Пытался так
Java
1
MyTv tv = (MyTv) textview;
И так
Java
1
2
MyTv tv = MyTv(getContext());
tv.getClass().cast(textview);
И так
Java
1
MyTv tv = MyTv.class.cast(textview);
Ни один из способов не работает.
Подскажите пожалуйста как привести TextView к своему типу наследуемым от TextView.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2016, 22:11
Ответы с готовыми решениями:

Как обращаться к своему классу по индексу?
Люди помогите пожалуйста :cry: как мне сделать чтоб бы можно было в параметры моего нового контрола...

Типы классу. Приведение. С++
Для приведения от пользовательского типа в основной тип используется: 1. Перегруженный оператор =...

Приведение типа к другому классу
Предположим есть класс class A { char a; void foo(); }; можно ли делать так ...

Приведение класса родителя к классу потомку java
Наткнулся на такой кусок кода в книге Хорстмана public void paintComponent(Graphics g) { ...

15
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.02.2016, 11:56 2
эта вьюшка указано в xml и она находится в onCreate() ?
если да то примерно так
Java
1
MyTv myTv = (MyTv) findViewById(R.id.myAwesomeCoolestView);
0
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
22.02.2016, 16:42  [ТС] 3
Нет. Она находится в собственном адаптере. Мне нужно именно приведение.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.02.2016, 16:45 4
она там уже создана или нет?
код из адаптера увидеть бы, а от непонятно, надо ее создавать или нет

нельзя просто взять вот так обычную TextView которая уже была создана и скастовать в MyTv
0
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
22.02.2016, 16:50  [ТС] 5
Адаптер
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class NewAdapterForSearch<T> extends ArrayAdapter<T>{
 
 
    public NewAdapterForSearch(Context context, int resource, T[] objects) {
        super(context, resource, objects);
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView tv1 = (TextView) super.getView(position, convertView, parent);
        MyTv tv = (MyTv) tv1;
        tv.setPlace(position);
        return tv;
    }
}

Вот как-то так.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.02.2016, 16:52 6
MyTv tv1 = (MyTv) getView(position, convertView, parent);
наверное так
0
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
22.02.2016, 17:08  [ТС] 7
Нет.
java.lang.ClassCastException: android.widget.TextView cannot be cast to ru.loginov.project.MyTv
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.02.2016, 17:18 8
MyTv tv = (MyTv) convertView;
так?

Добавлено через 4 минуты
если тоже нет, то надо видеть как создается адаптер в коде, где и как ему передается разметка для этого своего класса
0
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
22.02.2016, 17:29  [ТС] 9
FATAL EXCEPTION:
java.lang.NullPointerException

Добавлено через 59 секунд
Java
1
2
NewAdapterForSearch<String> arrayAdapter2 = new NewAdapterForSearch<String>(this,R.layout.list_item,new String[]{"Загрузка"});
ListView lv = (ListView) findViewById(R.id.listView);lv.setAdapter(arrayAdapter2);
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.02.2016, 17:46 10
его мы и пытаемся кастовать в MyTv я так понимаю
а что там?
0
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
22.02.2016, 18:01  [ТС] 11
Где там? В MyTv? Он в самом верху.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.02.2016, 18:06 12
не скопировалось R.layout.list_item
я про него говорил
0
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
22.02.2016, 18:42  [ТС] 13
list_item
Java
1
2
3
4
5
6
7
8
9
10
11
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:padding="5dp"
    android:text="TextView"
    android:textSize="24sp"
    android:textColor="@android:color/black">
</TextView>
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.02.2016, 18:43 14
вот я и спрашиваю - эту вьюшку мы должны скастовать потом в MyTv ?
0
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
22.02.2016, 18:44  [ТС] 15
Получается что да.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.02.2016, 18:47 16
Лучший ответ Сообщение было отмечено Dantes2104 как решение

Решение

тогда надо там так и писать
<имяпакета.что-то там.MyTv
вместо TextView

и в самом классе надо будет добавить еще один конструктор или поменять существующий на
Java
1
2
3
    public MyTv(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
1
22.02.2016, 18:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2016, 18:47
Помогаю со студенческими работами здесь

Приведение LPVOID к классу "непостоянной" величины
В поток посылаю экземпляр класс : userThread = CreateThread(NULL, NULL, ConnectionShell,...

Текст из TextView перенести в другой TextView по нажатию Button
Люди, помогите плиз. Недавно начал ковырять программирование под Android. Хотел сделать банальную...

TextView txt = new TextView(this); - ошибка
Возникла проблема с динамическим создание TextView в цыкле, хотя в другом месте создается таким же...

Ексель сортирует по своему
Привествую всех, Есть данные которые нужно отсортировать по возрастанию. Это одна из столбцов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru