Java Android:TextView显示包名而不是实际文本
my fragment_main中的文本视图应该显示字符串,但它显示的是包名 在我的主要活动课上Java Android:TextView显示包名而不是实际文本,java,android,Java,Android,my fragment_main中的文本视图应该显示字符串,但它显示的是包名 在我的主要活动课上 public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_m
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
ListView main_list;
ArrayAdapter<Cinema> adapter;
ArrayList<Cinema> ItemList = new ArrayList<Cinema>();
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.v("Check", "1");
final View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ItemList.addAll(initialization());
ListView main_list = (ListView) rootView.findViewById(R.id.mainlist);
adapter = new ListAdapater(rootView.getContext(), ItemList);
main_list.setAdapter(adapter);
main_list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// TODO Auto-generated method stub
Intent i = new Intent(rootView.getContext(), CinemaDetails.class);
Bundle b = new Bundle();
b.putParcelable("Cinema", ItemList.get(position));
i.putExtra("Bundle", b);
startActivity(i);
}
});
return rootView;
}
public ArrayList<Cinema> initialization () {
ArrayList<Cinema> tempItemList = new ArrayList<Cinema>();
ArrayList<Movie> movielistone = new ArrayList<Movie>();
Movie movieone = new Movie(101, "MovieOne", "null", 5, "nULL");
Movie movietwo = new Movie(102, "Movietwo", "null", 3, "nuLL");
movielistone.add(movieone);
movielistone.add(movietwo);
Cinema cinemaone = new Cinema(01, "test", "ygn", 55555, movielistone, 3);
Cinema cinematwo = new Cinema(02, "test2", "ygn", 554555, movielistone, 3);
tempItemList.add(cinemaone);
tempItemList.add(cinematwo);
return tempItemList;
}
}
公共类MainActivity扩展了ActionBarActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
如果(savedInstanceState==null){
getSupportFragmentManager().beginTransaction()
.add(R.id.container,新的占位符片段()).commit();
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
/**
*包含简单视图的占位符片段。
*/
公共静态类占位符片段扩展了片段{
ListView主列表;
阵列适配器;
ArrayList ItemList=新建ArrayList();
公共占位符片段(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
日志v(“检查”、“1”);
最终视图根视图=充气机。充气(R.layout.fragment_main,容器,假);
addAll(初始化());
ListView main_list=(ListView)rootView.findViewById(R.id.mainlist);
adapter=newlistadapater(rootView.getContext(),ItemList);
主列表。设置适配器(适配器);
main_list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id){
//TODO自动生成的方法存根
Intent i=新的Intent(rootView.getContext(),CinemaDetails.class);
Bundle b=新Bundle();
b、 putParcelable(“电影院”,ItemList.get(位置));
i、 putExtra(“束”,b);
星触觉(i);
}
});
返回rootView;
}
公共ArrayList初始化(){
ArrayList tempItemList=新建ArrayList();
ArrayList movielistone=新的ArrayList();
Movie-movieone=新电影(101,“movieone”,“空”,5,“空”);
Movie movietwo=新电影(102,“movietwo”,“null”,3,“null”);
movielistone.add(movieone);
movielistone.add(movietwo);
Cinema cinemaone=新电影院(01,“测试”,“ygn”,55555,movielistone,3);
电影院2=新电影院(02,“测试2”,“ygn”,554555,movielistone,3);
tempItemList.add(一个);
添加(两个);
返回tempItemList;
}
}
我使用数组适配器,它的代码是
public class ListAdapater extends ArrayAdapter<Cinema> {
private LayoutInflater inflater;
public ListAdapater(Context context, List<Cinema> itemList) {
super(context, R.layout.row, R.id.txt_cinemaname, itemList );
inflater = LayoutInflater.from(context) ;
// TODO Auto-generated constructor stub
}
@Override
public Cinema getItem(int position) {
// TODO Auto-generated method stub
return super.getItem(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Cinema cinema = this.getItem(position);
TextView txt_name;
TextView txt_movie;
if (convertView == null) {
convertView = inflater.inflate(R.layout.row, null);
txt_name = (TextView) convertView.findViewById(R.id.txt_cinemaname);
txt_movie = (TextView) convertView.findViewById(R.id.txt_moviesonshow);
convertView.setTag(new ItemViewHolder(txt_name, txt_movie));
} else {
ItemViewHolder viewHolder = (ItemViewHolder) convertView.getTag();
txt_name = viewHolder.getName();
txt_movie = viewHolder.getMoviename();
}
txt_name.setText("test");
Log.v("name", txt_name.getText().toString());
txt_movie.setText("");
for (Movie movie : cinema.getMovieonshow()) {
String temp = txt_movie.getText().toString();
txt_movie.setText(temp + movie.getName() + "\n");
}
return super.getView(position, convertView, parent);
}
public static class ItemViewHolder {
private TextView name;
private TextView moviename;
public ItemViewHolder() {}
public ItemViewHolder(TextView name, TextView moviename) {
super();
this.name = name;
this.moviename = moviename;
}
public TextView getName() {
return name;
}
public void setName(TextView name) {
this.name = name;
}
public TextView getMoviename() {
return moviename;
}
public void setMoviename(TextView moviename) {
this.moviename = moviename;
}
}}
公共类ListAdapater扩展了ArrayAdapter{
私人充气机;
公共ListAdapater(上下文上下文,列表项列表){
super(context,R.layout.row,R.id.txt\u cinemaname,itemList);
充气器=充气器。从(上下文);
//TODO自动生成的构造函数存根
}
@凌驾
公共影院项目(内部位置){
//TODO自动生成的方法存根
返回super.getItem(位置);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
电影院=此.getItem(位置);
TextView txt_名称;
TextView txt_电影;
if(convertView==null){
convertView=充气机充气(R.layout.row,空);
txt_name=(TextView)convertView.findViewById(R.id.txt_name);
txt_movie=(TextView)convertView.findViewById(R.id.txt_moviesShow);
setTag(新的ItemViewHolder(txt_名称,txt_电影));
}否则{
ItemViewHolder viewHolder=(ItemViewHolder)convertView.getTag();
txt_name=viewHolder.getName();
txt_movie=viewHolder.getMoviename();
}
txt_name.setText(“测试”);
Log.v(“name”,txt_name.getText().toString());
txt_movie.setText(“”);
for(电影:cinema.getMovieonshow()){
字符串temp=txt_movie.getText().toString();
txt_movie.setText(temp+movie.getName()+“\n”);
}
返回super.getView(position、convertView、parent);
}
公共静态类ItemViewHolder{
私有文本视图名称;
私有文本视图moviename;
public ItemViewHolder(){}
公共项目视图持有者(TextView名称、TextView moviename){
超级();
this.name=名称;
this.moviename=moviename;
}
公共文本视图getName(){
返回名称;
}
public void setName(TextView名称){
this.name=名称;
}
公共文本视图getMoviename(){
返回moviename;
}
公共无效setMoviename(TextView moviename){
this.moviename=moviename;
}
}}
我以前从未遇到过这个问题。我绑定到从TextView记录文本,它显示“test”,就像我放在那里的一样。有什么建议吗?谢谢阅读。我不太清楚,但为什么要在ListAdapter构造函数中传入
R.id.txt\u cinemaname
?问题看起来像是传入了对象(字符串“com.example…是指向对象的指针,我猜是TextView)而不是字符串
另外,在
getView()
方法中,您不应该返回convertView
而不是super.getView(position,convertView,parent);
,我不太清楚,但为什么要在列表中传入R.id.txt\u cinemaname
return super.getView(position, convertView, parent);