Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在片段中使用ListView时,适配器不调用getView()_Java_Android_Listview_Android Fragments_Adapter - Fatal编程技术网

Java 在片段中使用ListView时,适配器不调用getView()

Java 在片段中使用ListView时,适配器不调用getView(),java,android,listview,android-fragments,adapter,Java,Android,Listview,Android Fragments,Adapter,因此,在编写您的应用程序时,我面临着另一个“惊喜”问题。我知道有一个片段,但是使用了一个片段。当我放置ListView片段的标记时,当您调用列表中的适配器时,不会添加元素,这不是我在日志中跟踪的一种巧妙的方式,您不会调用getView()。更有趣的是,如果我不使用片段列表,而只是使用片段列表,并且您添加了适配器,当一切正常时,适配器工作正常,那么列表将被填充。我不明白为什么会发生这种情况——为什么在作品的片段列表中不充分 活动\u start.xml <LinearLayout xmlns

因此,在编写您的应用程序时,我面临着另一个“惊喜”问题。我知道有一个片段,但是使用了一个片段。当我放置ListView片段的标记时,当您调用列表中的适配器时,不会添加元素,这不是我在日志中跟踪的一种巧妙的方式,您不会调用getView()。更有趣的是,如果我不使用片段列表,而只是使用片段列表,并且您添加了适配器,当一切正常时,适配器工作正常,那么列表将被填充。我不明白为什么会发生这种情况——为什么在作品的片段列表中不充分

活动\u start.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"    
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
    android:scrollbars="vertical"
    android:scrollbarStyle="insideInset"
    android:gravity="center_vertical"
    android:orientation="vertical"
    android:background="#e8e8e8" 
    >

<Button 
    android:id="@+id/button_add_url"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:drawableRight="@drawable/green_add"
    android:drawablePadding="5dp"
    android:text="ADD URL"
    />    

 <LinearLayout
    android:id="@+id/linear_layout_list_show_monitor_url"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/border_background"
    android:orientation="vertical"
    android:padding="1dp"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    >


   <!--  <ListView
        android:id="@+id/list_view_fragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/> -->    

     <fragment
         android:id="@+id/fragment_list"
         android:name="pront.android.exservice.FragmentList"
         android:layout_width="match_parent"
         android:layout_height="300dp"/>           

 </LinearLayout>    

StartActivity.java

import java.util.ArrayList;
import pront.android.exservice.FragmentDialogAddNewUrl.FragmentDialogAddNewUrlConectActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TableLayout.LayoutParams;
import android.widget.Toast;

public class StartActivity 
                        extends FragmentActivity 
                        implements OnClickListener,
                                   FragmentDialogAddNewUrlConectActivity
{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    this.getWindow().addFlags
    (WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.activity_start);
    listViewUrl = (ListView) findViewById(R.id.list_view_fragment);
    screenWidthPx = this.getResources().getDisplayMetrics().widthPixels;
    screenHeightPx = this.getResources().getDisplayMetrics().heightPixels;
    layoutMarginPx = 16;
    screenDp = this.getResources().getDisplayMetrics().density;
    layoutMarginDp = (int)(layoutMarginPx*screenDp);
    typefaceRoboto = Typeface.createFromAsset(getAssets(),
            "Roboto-Thin.ttf");
    LinearLayout linearLayout = (LinearLayout) 
            findViewById(R.id.linear_layout_list_show_monitor_url);
    LayoutParams layoutParams = 
            new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT);        
    layoutParams.setMargins(layoutMarginDp, layoutMarginDp,
            layoutMarginDp, layoutMarginDp);
    linearLayout
        .setLayoutParams(layoutParams); 
    buttonAddUrl = (Button) findViewById(R.id.button_add_url);
    buttonAddUrl.setTypeface(typefaceRoboto, Typeface.BOLD);
    buttonAddUrl.setOnClickListener(this);        
    broadcastReceiver = new MyBroadcastReceiver();
    intentFilter = new IntentFilter(BROADCAST);
    registerReceiver(broadcastReceiver, intentFilter);
}

public void onStart(){
    super.onStart();
}

public void onRestart(){
    super.onRestart();
}

public void onResume(){
    super.onResume();
}

public void onPause(){
    super.onPause();
}

public void onStop(){
    super.onStop();
}

public void onDestroy(){
    unregisterReceiver(broadcastReceiver);
    super.onDestroy();
}

@Override
public void onBackPressed(){
    super.onBackPressed();

}

public void onClick(View view) {
    if(view.getId() == R.id.button_add_url){
        buttonAddUrl.setClickable(false);
        fragmentDialogAddNewUrl = new FragmentDialogAddNewUrl();
        fragmentDialogAddNewUrl.show(this.getSupportFragmentManager(),
                "fragmentDialogAddNewUrl");
        buttonAddUrl.setClickable(true);
    }        
} 

public void fragmentDialogClickButtonListener(String url, 
                                                String pathFavIcon)
{
    fragmentDialogAddNewUrl.onDestroyView();        
    this.url = url;
    Toast toastInfo = Toast
                    .makeText(this.getApplicationContext(),
                    "Service start monitor\n"+url,
                    Toast.LENGTH_LONG);
    toastInfo.setGravity(Gravity.TOP, 0, 0);
    toastInfo.show(); 
    arrayListUrl.add(new UrlBox(this.getApplicationContext(),
            url,
            pathFavIcon));
    Log.d("StartActivity", "fragmentDialogClick...() listViewUrl.setAdapter()");
    FragmentList fragmentList = (FragmentList) this.getSupportFragmentManager().findFragmentById(R.id.fragment_list);
    fragmentList.setAdapter(arrayListUrl);
//        MyListAdapter adapter = new MyListAdapter(this, R.layout.expandable_list_view_child_item, arrayListUrl);
//        adapter.notifyDataSetChanged();
//        listViewUrl.setAdapter(adapter);                
}

public static class MyBroadcastReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("", intent.getIntExtra("RESULT", 0)+"");                      
    }

}   

private Button buttonAddUrl;
private ListView listViewUrl;

private MyBroadcastReceiver broadcastReceiver;    
private IntentFilter intentFilter;
private Typeface typefaceRoboto;
private DialogFragment fragmentDialogAddNewUrl;

private MyListAdapter myListAdapter = null;
private ArrayList<UrlBox> arrayListUrl = new ArrayList<UrlBox>();
private int layoutMarginPx;    
private float screenDp;
private int screenWidthPx;
private int screenHeightPx;
private int layoutMarginDp;
private ArrayList<String> childUrl = new ArrayList<String>();
private ArrayList<Drawable> childFavIcon = new ArrayList<Drawable>();
private String url;
private final static String BROADCAST = "pront.android.exservice";

}
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class FragmentList extends Fragment {

@Override
public void onAttach(Activity activity){ 
    super.onAttach(activity);
}

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);     
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    listView = (ListView) inflater.inflate(R.layout.layout_fragment_list, null, false).findViewById(R.id.list_view_fragment);
    return inflater.inflate(R.layout.layout_fragment_list, null, false);
}

public void setAdapter(ArrayList<UrlBox> arrayList){
    listAdapter = new MyListAdapter(getActivity(), R.layout.expandable_list_view_child_item, arrayList);
    listAdapter.notifyDataSetChanged();
    if(listView != null){
        listView.setAdapter(listAdapter);           
        System.out.println("set adapter");
    }        
}

MyListAdapter listAdapter;
ListView listView;  

}
import java.util.ArrayList;
import android.app.Activity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyListAdapter extends ArrayAdapter{

MyListAdapter(Activity context, int layoutResourceId, ArrayList<UrlBox> arrayList) {
    super(context, layoutResourceId);
    Log.d("MyListAdapter", "constructor");
    this.context = context;
    this.arrayListUrlBox = arrayList;
    this.layoutResourceId = layoutResourceId;
}

@Override
public View getView (int position, View convertView, ViewGroup parent){
    Log.d("MyListAdapter", "getView");
    View returnView = convertView;
    ListItemTagHolder tag  = null;
    if(convertView == null){
        LayoutInflater inflater = context.getLayoutInflater();
        returnView = inflater.inflate(layoutResourceId, null, false);
        tag = new ListItemTagHolder();
        tag.ImageViewFavicon = (ImageView) returnView.findViewById(R.id.image_view_favicon);
        tag.ImageViewStatus = (ImageView) returnView.findViewById(R.id.image_view_status);
        tag.TextViewUrl = (TextView) returnView.findViewById(R.id.text_view_url);
        returnView.setTag(tag);
    }
    else{
        tag = (ListItemTagHolder) returnView.getTag();
    }
    tag.ImageViewFavicon.setImageDrawable(arrayListUrlBox.get(position).getDrawableFavIcon());
    tag.ImageViewStatus.setImageDrawable(arrayListUrlBox.get(position).getDrawableFavIcon()); // !
    tag.TextViewUrl.setText(arrayListUrlBox.get(position).getUrl());
    return returnView;      
}

 @Override
 public int getCount() {
     return arrayListUrlBox.size();
 }

 public UrlBox getItem(int position) {
     return arrayListUrlBox.get(position);
 }

private ArrayList<UrlBox> arrayListUrlBox;
private Activity context;
private int layoutResourceId;

static class ListItemTagHolder{
    protected ImageView ImageViewFavicon;
    protected ImageView ImageViewStatus;
    protected TextView TextViewUrl;
}   
}
import java.util.ArrayList;
导入pront.android.exservice.FragmentDialogAddNewUrl.fragmentDialogAddNewUrlConconnectActivity;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.content.pm.ActivityInfo;
导入android.graphics.Typeface;
导入android.graphics.drawable.drawable;
导入android.os.Bundle;
导入android.support.v4.app.DialogFragment;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.app.FragmentManager;
导入android.util.Log;
导入android.view.Gravity;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.Window;
导入android.view.WindowManager;
导入android.widget.Button;
导入android.widget.LinearLayout;
导入android.widget.ListView;
导入android.widget.TableLayout.LayoutParams;
导入android.widget.Toast;
公共类StartActivity
扩展碎片活动
实现OnClickListener,
FragmentDialogAddNewUrlConconnectActivity
{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE\u NO\u TITLE);
此.setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Graphic);
此.getWindow().addFlags
(WindowManager.LayoutParams.FLAG_全屏显示);
setContentView(R.layout.activity_start);
listViewUrl=(ListView)findViewById(R.id.list\u view\u片段);
screenWidthPx=this.getResources().getDisplayMetrics().widthPixels;
screenHeightPx=this.getResources().getDisplayMetrics().heightPixels;
layoutMarginPx=16;
screenDp=this.getResources().getDisplayMetrics().density;
layoutMarginDp=(int)(layoutMarginPx*screenDp);
typefaceRoboto=Typeface.createFromAsset(getAssets(),
“Roboto Thin.ttf”);
LinearLayout LinearLayout=(LinearLayout)
findViewById(R.id.linear\u layout\u list\u show\u monitor\u url);
LayoutParams LayoutParams=
新的LayoutParams(LayoutParams.FILL\u父级,
LayoutParams.WRAP_内容);
layoutParams.setMargins(layoutMarginDp,layoutMarginDp,
layoutMarginDp,layoutMarginDp);
线性布局
.setLayoutParams(layoutParams);
buttonAddUrl=(按钮)findViewById(R.id.Button\u add\u url);
buttonAddUrl.setTypeface(字体Roboto,字体.粗体);
buttonAddUrl.setOnClickListener(此);
broadcastReceiver=新的MyBroadcastReceiver();
intentFilter=新的intentFilter(广播);
registerReceiver(广播接收器、意向过滤器);
}
public void onStart(){
super.onStart();
}
公共void onRestart(){
super.onRestart();
}
恢复时公开作废(){
super.onResume();
}
公共无效暂停(){
super.onPause();
}
公共void onStop(){
super.onStop();
}
公共空间{
未注册接收器(广播接收器);
super.ondestory();
}
@凌驾
public void onBackPressed(){
super.onBackPressed();
}
公共void onClick(视图){
if(view.getId()==R.id.button\u add\u url){
按钮默认设置可点击(错误);
fragmentDialogAddNewUrl=新fragmentDialogAddNewUrl();
fragmentDialogAddNewUrl.show(this.getSupportFragmentManager(),
“fragmentDialogAddNewUrl”);
按钮默认设置可点击(真);
}        
} 
公共无效碎片对话框ClickButtonListener(字符串url,
字符串路径(FAVICON)
{
fragmentDialogAddNewUrl.onDestroyView();
this.url=url;
吐司
.makeText(此.getApplicationContext(),
“服务启动监视器\n”+url,
吐司长度(长);
toastInfo.setGravity(Gravity.TOP,0,0);
toastInfo.show();
arrayListUrl.add(新的UrlBox(this.getApplicationContext()),
网址,
帕法维康);
Log.d(“StartActivity”、“fragmentDialogClick…()listViewUrl.setAdapter()”);
FragmentList FragmentList=(FragmentList)this.getSupportFragmentManager().findFragmentById(R.id.fragment\u list);
fragmentList.setAdapter(ArraySturl);
//MyListAdapter=新的MyListAdapter(此,R.layout.expandable\u list\u view\u child\u项,ArraySturl);
//adapter.notifyDataSetChanged();
//setAdapter(适配器);
}
公共静态类MyBroadcastReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
Log.d(“”,intent.getIntExtra(“结果”,0)+”);
}
}   
私人按钮按钮;
私有ListView listViewUrl;
私人MyBroadcastReceiver;
私人意向过滤器意向过滤器;
私人字体机器人;
私有DialogFragment fragmentDialogAddNewUrl;
私有MyListAdapter MyListAdapter=null;
private ArrayList arrayListUrl=new ArrayList();
私人内部布局MARGINPX;
私人浮动屏幕DP;
专用int屏幕宽度px;
专用int屏幕高度px;
私人内部布局Margindp;
私人ArrayList
@Override
public int getCount() {
   return arrayListUrlBox.size();
}
 super(context, layoutResourceId, arrayList);
super(context, layoutResourceId);
public class MyListAdapter extends ArrayAdapter**<UrlBox>** {

  MyListAdapter(Activity context, int layoutResourceId, ArrayList<UrlBox> arrayList) {
 super(context, layoutResourceId, arrayList);
 Log.d("MyListAdapter", "constructor", **arrayList**);
 this.context = context;
 this.arrayListUrlBox = arrayList;
 this.layoutResourceId = layoutResourceId;
}
....<continue with rest part of your code>...