小编Bra*_*iat的帖子

Viewpager没有显示在RecyclerView行内

我想制作一个"照片细节"活动或片段,我在其上方和下方显示照片aViewpPager,显示相关照片的评论和喜欢(2个标签).为了使屏幕'Scrollable'所以我可以向上/向下滚动评论和喜欢并向左/向右滑动我决定使用2行的RecyclerView:

第1行:照片(ImageView).

第2行:SlidingTabLayout + ViewPager + FragmentPagerAdapter.

代码编译并运行,显示图像和slidingTabLayout,但不显示ViewPager.

所以我的两个主要问题是:

1-我的实施有什么问题.

2 - 对于我想要达到的目标,是否有替代或更好的解决方案?

注意:我不想使用带有header的listView.我想使用RecyclerView,因为在网络的顶部/底部添加元素更容易.

PhotoDetailsActivity.java

public class MainActivity extends ActionBarActivity {
    RecyclerView recyclerViewPhotoDetails;

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

        this.recyclerViewPhotoDetails = (RecyclerView) this.findViewById(R.id.recycler_view_photo_details);
        this.recyclerViewPhotoDetails.setLayoutManager(new LinearLayoutManager(this));
        this.recyclerViewPhotoDetails.setAdapter(new PhotoDetailsRecyclerAdapter(this.getSupportFragmentManager()));
    }
}
Run Code Online (Sandbox Code Playgroud)

PhotosDetailsRecyclerAdapter.java

public class PhotoDetailsRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private static final int ROW_IMAGE = 0;
    private static final int ROW_LIKES_AND_COMMENTS = 1;
    private static final int TOTAL_ROWS = 2;

    private FragmentManager fragmentManager;

    public PhotoDetailsRecyclerAdapter(FragmentManager fragmentManager) {
        this.fragmentManager = fragmentManager; …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager android-recyclerview

22
推荐指数
3
解决办法
2万
查看次数

使用常量进行算术运算时出现溢出错误

我尝试了以下代码:

int x, y;
x = y = int.MaxValue;

int result = x + y;
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,结果将包含-2(我知道为什么).

但是当这样做时:

const int x = int.MaxValue;
const int y = int.MaxValue;

int result = x + y;
Run Code Online (Sandbox Code Playgroud)

由于溢出问题,这不会编译.为什么?

c#

12
推荐指数
1
解决办法
181
查看次数

使用值和引用参数类型重载的方法

我有以下代码:

class Calculator
    {
        public int Sum(int x, int y)
        {
            return x + y;
        }



        public int Sum(out int x, out int y)
        {
            x = y = 10;
            return x + y;
        }


    }

    class Program
    {
        static void Main(string[] args)
        {
            int x = 10, y = 20;
            Calculator calculator = new Calculator();

            Console.WriteLine ( calculator.Sum ( x , y ) );
            Console.WriteLine ( calculator.Sum ( out x , out y ) );

        }
    }
Run Code Online (Sandbox Code Playgroud)

尽管方法签名仅与out …

c# overloading

10
推荐指数
2
解决办法
6464
查看次数

尽管没有实现接口,代码工作仍未实现

我有以下代码:

 interface ICalculator
 {
     int Sum ( int x,  int y);
 }

 abstract class AbsCalculator
 {
     public abstract int Sum(int x, int y);
 }

 class Calculator : AbsCalculator, ICalculator
 {
     public override int Sum(int x, int y)
     {
         Console.WriteLine ( "From overriden method" );
         return x + y;
     }
 }
Run Code Online (Sandbox Code Playgroud)

以下语句工作正常,程序编译,尽管我没有实现接口:

Calculator calculator = new Calculator();
Console.WriteLine ( calculator.Sum(10, 20) );
Run Code Online (Sandbox Code Playgroud)

所以我的第一个问题是:它为什么有用?

然后,我将以下接口实现添加到Calculator类:

int ICalculator.Sum(int x, int y)
{
     Console.WriteLine("From implemented method");
     return x + y;
}
Run Code Online (Sandbox Code Playgroud)

再次尝试以下声明时:

Calculator calculator …
Run Code Online (Sandbox Code Playgroud)

c# interface

8
推荐指数
1
解决办法
470
查看次数

使用Action和Func委托的可选和命名参数

为什么不可能执行以下操作:

Func<int, int, int> sum = delegate(int x, int y = 20) { return x + y; };

Action<string, DateTime> print = 
    delegate(string message, DateTime datetime = DateTime.Now) 
    { 
        Console.WriteLine(message);
    };

sum(x: 20, y: 40);
print(datetime: DateTime.Now, message: "Hello");
Run Code Online (Sandbox Code Playgroud)

只有命名参数的情况:

Func<int, int, int> sum = delegate(int x, int y) { return x + y; };

Action<string, DateTime> print = 
    delegate(string message, DateTime datetime) 
    { 
        Console.WriteLine("{0} {1}", message, datetime);
    };

Console.WriteLine(sum(y: 20, x: 40));
print(datetime: DateTime.Now, message: "Hello");
Run Code Online (Sandbox Code Playgroud)

只有可选参数的情况:

Func<int, int, …
Run Code Online (Sandbox Code Playgroud)

c# delegates

7
推荐指数
1
解决办法
8203
查看次数

尽管覆盖了结构默认构造函数,但仍会使用它

我有以下代码:

struct Person
    {
        public readonly int x;

        public Person( int x )
        {
            this.x = x;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person();
            Console.Write(p.x);
        } 
    }
Run Code Online (Sandbox Code Playgroud)

这段代码运行良好。为什么?覆盖默认构造函数没有应用于 structs 吗?使用参数化构造函数是否覆盖默认构造函数?

c# struct

3
推荐指数
1
解决办法
1649
查看次数

从组合枚举值中获取所有枚举常量的更好方法

我正在尝试从Type枚举变量中获取所有枚举值:

[Flags]
    enum Type
    {
        XML = 1,
        HTML = 2,
        JSON = 4,
        CVS = 8
    }


static void Main(string[] args)
{

    Type type = Type.JSON | Type.XML;

    List<Type> types = new List<Type>();

    foreach (string elem in type.ToString().Split(',') )
        types.Add(  (Type)Enum.Parse( typeof(Type), elem.Trim() ) );          

}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

c# enums

3
推荐指数
1
解决办法
129
查看次数

C#自定义一元运算符重载

C#类是否从基类继承自定义运算符?我正在尝试以下代码:

class Person
{
    public int Age;

    public static Person operator ++(Person p)
    {
        p.Age++;
        return p;
    }
}

class Agent : Person {   }

static void Main(string[] args)
{
    Person p = new Person { Age = 23 };
    Console.WriteLine ( "Before increment : {0}" , p.Age );

    p++;
    Console.WriteLine("After increment : {0}", p.Age);

    Agent agent = new Agent { Age = 25 };
    Console.WriteLine("Before increment : {0}", agent.Age);

    agent++;
    Console.WriteLine("After increment : {0}", agent.Age);

}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我,他无法显式地从Person转换为Agent.

我试过了 : …

c# operator-overloading

2
推荐指数
1
解决办法
662
查看次数

结构类型的大小

c#中的结构是否有固定的大小?那就是为什么以下代码:

struct Person
{
    Person child;
}
Run Code Online (Sandbox Code Playgroud)

会造成无限循环问题吗?或者因为结构类型包含其正确的值而不是引用?

c# struct

0
推荐指数
1
解决办法
96
查看次数

尽管已实现的方法具有相同的签名,但代

我没有意识到为什么这段代码有效?

interface ISumCalculator
{
    int Calc( int x, int y );
}

interface IProductCalculator
{
    int Clac ( int x, int y );
}


class Calculator : ISumCalculator, IProductCalculator
{

    public int Calc(int x, int y)
    {
        throw new NotImplementedException();
    }

    public int Clac(int x, int y)
    {
        throw new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# interface

-2
推荐指数
1
解决办法
93
查看次数